[SEBA-946]
Fix Swagger documentation generation, update to Python 3
Change-Id: I0a55c4805a993dcac9f0721be87bbefbf8b9b348
diff --git a/VERSION b/VERSION
index fcdb2e1..05f4c08 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-4.0.0
+4.0.1-dev0
diff --git a/docs/.gitignore b/docs/.gitignore
index d1adcde..e67364c 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -1,2 +1,2 @@
_book/
-venv-xosdocs
+venv_xosdocs
diff --git a/docs/Makefile b/docs/Makefile
index 86248c0..8888328 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -49,11 +49,15 @@
swagger: swagger_clean swagger_docs swagger_serve_spec
-venv-xosdocs:
- ./venv-xosdocs.sh
+venv_xosdocs:
+ virtualenv -p python3 $@ ;\
+ source ./$@/bin/activate ;\
+ pip install --upgrade pip ;\
+ pip install -e ../lib/xos-genx
-swagger_docs: venv-xosdocs
- bash -c 'source $(DOCSDIR)venv-xosdocs/bin/activate && python $(DOCSDIR)scripts/swagger_docs.py'
+swagger_docs: venv_xosdocs
+ source ./$</bin/activate ; set -u ;\
+ python $(DOCSDIR)scripts/swagger_docs.py
swagger_clean:
rm -rf swagger/specs/*
diff --git a/docs/scripts/swagger_docs.py b/docs/scripts/swagger_docs.py
index 7a01bc7..f22d1c2 100644
--- a/docs/scripts/swagger_docs.py
+++ b/docs/scripts/swagger_docs.py
@@ -12,6 +12,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
+
import os
import traceback
from xosgenx.generator import XOSProcessor, XOSProcessorArgs
@@ -23,13 +25,14 @@
class Args:
pass
+
def generate_swagger_docs(xproto):
# if not os.path.isfile(xproto):
# print "ERROR: Couldn't find xproto file for %s at: %s" % (service, xproto)
# return
- print "Generating swagger docs for %s" % (xproto)
+ print("Generating swagger docs for %s" % (xproto))
args = XOSProcessorArgs()
args.files = xproto
args.target = 'swagger.xtarget'
@@ -40,9 +43,10 @@
try:
XOSProcessor.process(args)
except Exception:
- print "ERROR: Couldn't generate swagger specs"
+ print("ERROR: Couldn't generate swagger specs")
traceback.print_exc()
+
def get_xproto_recursively(root):
files = []
items = os.listdir(root)
@@ -63,9 +67,7 @@
elif os.path.isfile(item_abs_path) and ".xproto" in item_abs_path:
files.append(item_abs_path)
- protos = [f for f in files if "xproto" in f]
-
- protos = sorted(protos)
+ protos = sorted([f for f in files if "xproto" in f])
# remove the core xproto...
core_proto = None
@@ -81,12 +83,6 @@
return protos
-def main():
-
- protos = get_xproto_recursively(REPO_DIR)
-
- generate_swagger_docs(protos)
-
-
if __name__ == '__main__':
- main()
+ protos = get_xproto_recursively(REPO_DIR)
+ generate_swagger_docs(protos)
diff --git a/docs/venv-xosdocs.sh b/docs/venv-xosdocs.sh
deleted file mode 100755
index ca51fef..0000000
--- a/docs/venv-xosdocs.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright 2017-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.
-
-set -e -o pipefail
-
-BASEDIR=$(pwd)
-VENVDIR=venv-xosdocs
-
-# create venv if it's not yet there
-if [ ! -d "$BASEDIR/$VENVDIR" ]; then
- echo "Setting up virtualenv for XOS Swagger Docs"
- virtualenv -q $BASEDIR/$VENVDIR --no-site-packages
- source $BASEDIR/$VENVDIR/bin/activate
- pip install --upgrade pip
- echo "Virtualenv created."
-fi
-
-# activate the virtual env
-if [ ! $VIRTUAL_ENV ]; then
- source $BASEDIR/$VENVDIR/bin/activate
- echo "Virtualenv activated."
-fi
-
-# install pip packages
-pip install -e $BASEDIR/$VENVDIR/../../lib/xos-genx
diff --git a/lib/xos-genx/xosgenx/jinja2_extensions/base.py b/lib/xos-genx/xosgenx/jinja2_extensions/base.py
index 26564bb..5f24f40 100644
--- a/lib/xos-genx/xosgenx/jinja2_extensions/base.py
+++ b/lib/xos-genx/xosgenx/jinja2_extensions/base.py
@@ -482,7 +482,8 @@
c_list = []
for c in eval(xproto_unquote(f["options"]["choices"])):
- c_list.append(c[0])
+ if c[0] is not None:
+ c_list.append(c[0])
return sorted(c_list)
else: