ONOS specific CLI changes
diff --git a/cli/Makefile b/cli/Makefile
index ceb178f..4693918 100755
--- a/cli/Makefile
+++ b/cli/Makefile
@@ -18,38 +18,39 @@
VIRTUALENV = $(WORKSPACE)/ve
TOOLS = $(WORKSPACE)/tools
BUILD_DIR = $(SOURCE)/build
-FL_DIR = $(SOURCE)/sdnplatform
+#FL_DIR = $(SOURCE)/sdnplatform
all: build-sdnplatform
clean-python:
- printf 'import setuptools\nsetuptools.setup(name="django_cassandra", version="0.1", packages=["django_cassandra", "django_cassandra.db"])' >$(SOURCE)/django_cassandra_backend/setup.py
+# printf 'import setuptools\nsetuptools.setup(name="django_cassandra", version="0.1", packages=["django_cassandra", "django_cassandra.db"])' >$(SOURCE)/django_cassandra_backend/setup.py
echo '$(SOURCE)' >$$(python -c 'import distutils; print distutils.sysconfig.get_python_lib()')/sdnplatform.pth
set -e; \
cd $(SOURCE); \
- for p in django_cassandra_backend/setup.py sdncon/setup.py cli/setup.py; do \
+# for p in django_cassandra_backend/setup.py sdncon/setup.py cli/setup.py; do
+ for p in sdncon/setup.py cli/setup.py; do \
echo "+++ Preparing Python virtualenv for $$p"; \
( cd $$(dirname $$p); rm -rf *.egg-info; ARCHFLAGS="-arch i386 -arch x86_64" python $$(basename $$p) develop ); \
done
( cd $(SOURCE)/cli ; tools/rebuild_model.sh )
clean-sdnplatform:
- cd $(FL_DIR); ant clean
+# cd $(FL_DIR); ant clean
clean: reset-cassandra clean-sdnplatform clean-python
stop-cassandra:
- $(BUILD_DIR)/kill-port-wait.sh -p 9160
- @echo "+++ Cassandra stopped"
+# $(BUILD_DIR)/kill-port-wait.sh -p 9160
+# @echo "+++ Cassandra stopped"
reset-cassandra: stop-cassandra
- rm -rf $(VIRTUALENV)/cassandra
- @echo "+++ Cassandra db deleted"
+# rm -rf $(VIRTUALENV)/cassandra
+# @echo "+++ Cassandra db deleted"
cassandra: start-cassandra
start-cassandra:
- $(BUILD_DIR)/start-and-wait-for-port.sh -p 9160 -l $(VIRTUALENV)/log/cassandra.log $(TOOLS)/cassandra/bin/cassandra
- @echo "+++ Cassandra running"
+# $(BUILD_DIR)/start-and-wait-for-port.sh -p 9160 -l $(VIRTUALENV)/log/cassandra.log $(TOOLS)/cassandra/bin/cassandra
+# @echo "+++ Cassandra running"
stop-sdncon:
$(BUILD_DIR)/kill-port-wait.sh -p 8000
@@ -68,18 +69,18 @@
@echo "+++ sdncon running"
stop-sdnplatform:
- while pid=$$(lsof -t -iTCP:6633 -sTCP:LISTEN); do kill $${pid}; sleep 1; done
- @echo "+++ SDN Platform stopped"
+# while pid=$$(lsof -t -iTCP:6633 -sTCP:LISTEN); do kill $${pid}; sleep 1; done
+# @echo "+++ SDN Platform stopped"
start-sdnplatform: start-cassandra
- if ! lsof -iTCP:6633 -sTCP:LISTEN >/dev/null; then \
- ( cd $(SOURCE)/sdnplatform; ant run &>$(VIRTUALENV)/log/sdnplatform.log & ); \
- fi
- while ! nc -z localhost 6633; do sleep 1; done
- @echo "+++ SDN Platform running"
+# if ! lsof -iTCP:6633 -sTCP:LISTEN >/dev/null; then \
+# ( cd $(SOURCE)/sdnplatform; ant run &>$(VIRTUALENV)/log/sdnplatform.log & ); \
+# fi
+# while ! nc -z localhost 6633; do sleep 1; done
+# @echo "+++ SDN Platform running"
eclipse:
- cd $(FL_DIR); ant eclipse
+# cd $(FL_DIR); ant eclipse
build-sdnplatform:
- cd $(FL_DIR); ant dist
+# cd $(FL_DIR); ant dist
diff --git a/cli/cli/cli.py b/cli/cli/cli.py
index afe6188..b03f6dc 100755
--- a/cli/cli/cli.py
+++ b/cli/cli/cli.py
@@ -237,6 +237,7 @@
FT_TIMEOUT = "FilterTimeout"
FT_PERIOD_DEFAULT = 300
+onos=1
#
# --------------------------------------------------------------------------------
#
@@ -520,11 +521,18 @@
#
# commands which start at 'login'
#
- self.command_nested_dict['login'] = [ 'show', 'logout', 'exit',
+ if onos == 0:
+ self.command_nested_dict['login'] = [ 'show', 'logout', 'exit',
'history', 'help', 'echo',
'date', 'trace', 'traceroute',
'ping', 'test', 'version',
'connect', 'watch', 'no' ]
+ else:
+ self.command_nested_dict['login'] = [ 'show', 'logout', 'exit',
+ 'history', 'help', 'echo',
+ 'date', 'trace',
+ 'ping', 'test', 'version',
+ 'connect', 'watch', 'no' ]
self.command_nested_dict['enable'] = [ 'clear', 'end' ]
@@ -7747,7 +7755,7 @@
while self.run:
# Get command line - this will use the command completion above
try:
- rest_to_model.validate_switch()
+ #rest_to_model.validate_switch()
url_cache.clear_cached_urls()
line = raw_input(self.prompt)
if self.batch:
diff --git a/cli/cli/desc/version200/switch.py b/cli/cli/desc/version200/switch.py
index 67facf5..541b3a5 100755
--- a/cli/cli/desc/version200/switch.py
+++ b/cli/cli/desc/version200/switch.py
@@ -951,12 +951,9 @@
'switch' : {
'field-orderings' : {
'default' : [ 'Idx', '@', 'switch-alias', 'connected-since',
- 'ip-address', 'tunnelCapable', 'tunnelEnabled',
- 'tunnelState', 'core-switch', ],
+ 'ip-address', ],
'details' : [ 'Idx','@', 'switch-alias', 'connected-since',
- 'ip-address',
- 'tunnelCapable', 'tunnelEnabled', 'tunnelState',
- 'core-switch', ],
+ 'ip-address', ],
'brief' : [ 'Idx', '@', 'switch-alias', 'connected-since',
'ip-address', ],
},
diff --git a/cli/cli/rest_to_model.py b/cli/cli/rest_to_model.py
index d061277..692b3e7 100755
--- a/cli/cli/rest_to_model.py
+++ b/cli/cli/rest_to_model.py
@@ -51,6 +51,7 @@
to move model requests to specific url requests
"""
+ onos = 1
startswith = '__startswith'
data = dict(data)
@@ -389,62 +390,68 @@
continue
if switch_prefix and not entry['dpid'].startswith(switch_prefix):
continue
-
- attrs = entry['attributes']
- actions = entry['actions']
- capabilities = entry['capabilities']
- inet_address = entry.get('inetAddress')
- ip_address = ''
- tcp_port = ''
- if inet_address:
- # Current Java value looks like: /192.168.2.104:38420
- inet_parts = inet_address.split(':')
- ip_address = inet_parts[0][1:]
- tcp_port = inet_parts[1]
-
- result.append({
- 'dpid' : entry['dpid'],
- 'connected-since' : entry['connectedSince'],
- 'ip-address' : ip_address,
- 'tcp-port' : tcp_port,
- 'actions' : actions,
- 'capabilities' : capabilities,
- 'dp-desc' : attrs.get('DescriptionData', ''),
- 'fast-wildcards' : attrs.get('FastWildcards', ''),
- 'supports-nx-role' : attrs.get('supportsNxRole', ''),
- 'supports-ofpp-flood' : attrs.get('supportsOfppFlood', ''),
- 'supports-ofpp-table' : attrs.get('supportsOfppTable', ''),
- 'core-switch' : False,
- })
-
+ if onos == 1:
+ result.append({
+ 'dpid' : entry['dpid'],
+ 'connected-since' : 0,
+ 'ip-address' : 0,
+ })
+ else:
+ attrs = entry['attributes']
+ actions = entry['actions']
+ capabilities = entry['capabilities']
+ inet_address = entry.get('inetAddress')
+ ip_address = ''
+ tcp_port = ''
+ if inet_address:
+ # Current Java value looks like: /192.168.2.104:38420
+ inet_parts = inet_address.split(':')
+ ip_address = inet_parts[0][1:]
+ tcp_port = inet_parts[1]
+
+ result.append({
+ 'dpid' : entry['dpid'],
+ 'connected-since' : entry['connectedSince'],
+ 'ip-address' : ip_address,
+ 'tcp-port' : tcp_port,
+ 'actions' : actions,
+ 'capabilities' : capabilities,
+ 'dp-desc' : attrs.get('DescriptionData', ''),
+ 'fast-wildcards' : attrs.get('FastWildcards', ''),
+ 'supports-nx-role' : attrs.get('supportsNxRole', ''),
+ 'supports-ofpp-flood' : attrs.get('supportsOfppFlood', ''),
+ 'supports-ofpp-table' : attrs.get('supportsOfppTable', ''),
+ 'core-switch' : False,
+ })
# now add switch-config
switch_config = sdnsh.rest_query_objects('switch-config', data)
known_dpids = dict([[x['dpid'], x] for x in result])
- for sw in switch_config:
- dpid = sw['dpid']
- if not dpid in known_dpids:
- # be sensitive to search fields:
- query_match = True
- if len(data):
- for (d, dv) in data.items():
- # other ops aside from '='?
- if d.endswith(startswith):
- fn = d[:-len(startswith)]
- if not fn in sw or not sw[fn].startswith(dv):
+ if onos == 0:
+ for sw in switch_config:
+ dpid = sw['dpid']
+ if not dpid in known_dpids:
+ # be sensitive to search fields:
+ query_match = True
+ if len(data):
+ for (d, dv) in data.items():
+ # other ops aside from '='?
+ if d.endswith(startswith):
+ fn = d[:-len(startswith)]
+ if not fn in sw or not sw[fn].startswith(dv):
+ query_match = False
+ elif (not d in sw) or dv != sw[d]:
query_match = False
- elif (not d in sw) or dv != sw[d]:
- query_match = False
- break
-
- if query_match:
- sw['ip-address'] = ''
- sw['tcp-port'] = ''
- sw['connected-since'] = ''
- result.append(sw)
- else:
- known_dpids[dpid].update(sw)
+ break
+
+ if query_match:
+ sw['ip-address'] = ''
+ sw['tcp-port'] = ''
+ sw['connected-since'] = ''
+ result.append(sw)
+ else:
+ known_dpids[dpid].update(sw)
elif obj_type == 'interfaces':
# These are called interfaces because the primary
@@ -476,15 +483,19 @@
continue
for p in entry['ports']:
- portNumber = p['portNumber']
- name = p['name']
+ if onos == 0:
+ portNumber = p['portNumber']
+ name = p['name']
+ else:
+ portNumber = p['number']
+ name = 0
if name_match and name.lower() != name_match:
continue
if name_prefix and not name.lower().startswith(name_prefix):
continue
-
- result.append({
+ if onos == 0:
+ result.append({
'id' : '%s|%s' % (dpid,name),
'portNumber' : portNumber,
'switch' : dpid,
@@ -494,7 +505,20 @@
'advertisedFeatures' : p['advertisedFeatures'],
'currentFeatures' : p['currentFeatures'],
'hardwareAddress' : p['hardwareAddress'],
- })
+ })
+ else:
+ result.append({
+ 'id' : '%s|%s' % (dpid,name),
+ 'portNumber' : portNumber,
+ 'switch' : dpid,
+ 'portName' : 0,
+ 'config' : 0,
+ 'state' : p['state'],
+ 'advertisedFeatures' : 0,
+ 'currentFeatures' : 0,
+ 'hardwareAddress' : 0,
+ })
+
#
# order the result
diff --git a/cli/deps/apache-cassandra-1.0.10-bin.tar.gz b/cli/deps/apache-cassandra-1.0.10-bin.tar.gz
deleted file mode 100755
index 03a3bbf..0000000
--- a/cli/deps/apache-cassandra-1.0.10-bin.tar.gz
+++ /dev/null
Binary files differ
diff --git a/cli/sdncon/rest/views.py b/cli/sdncon/rest/views.py
index 6355c35..be01800 100755
--- a/cli/sdncon/rest/views.py
+++ b/cli/sdncon/rest/views.py
@@ -47,7 +47,12 @@
JSON_CONTENT_TYPE = 'application/json'
BINARY_DATA_CONTENT_TYPE = 'application/octet-stream'
-CONTROLLER_URL_PREFIX = 'http://localhost:8080/wm/'
+onos = 1
+
+if onos == 1:
+ CONTROLLER_URL_PREFIX = 'http://localhost:9000/wm/'
+else:
+ CONTROLLER_URL_PREFIX = 'http://localhost:8080/wm/'
def controller_url(*elements):
return CONTROLLER_URL_PREFIX + '/'.join(elements)
@@ -675,18 +680,30 @@
@safe_rest_view
def do_device(request):
- return get_sdnplatform_query(request, "device")
+ if onos == 0:
+ return get_sdnplatform_query(request, "device")
+ else:
+ url = controller_url("onos", "topology", "hosts")
+ if request.META['QUERY_STRING']:
+ url += '?' + request.META['QUERY_STRING']
+ return get_sdnplatform_response(url)
@safe_rest_view
def do_switches(request):
- url = controller_url("core", "controller", "switches", "json")
+ if onos == 0:
+ url = controller_url("core", "controller", "switches", "json")
+ else:
+ url = controller_url("onos", "topology", "switches")
if request.META['QUERY_STRING']:
url += '?' + request.META['QUERY_STRING']
return get_sdnplatform_response(url)
@safe_rest_view
def do_links(request):
- url = controller_url("topology", "links", "json")
+ if onos == 0:
+ url = controller_url("topology", "links", "json")
+ else:
+ url = controller_url("onos", "topology", "links")
if request.META['QUERY_STRING']:
url += '?' + request.META['QUERY_STRING']
return get_sdnplatform_response(url)
diff --git a/cli/sdncon/settings.py b/cli/sdncon/settings.py
index cc2c62e..97f766e 100755
--- a/cli/sdncon/settings.py
+++ b/cli/sdncon/settings.py
@@ -17,7 +17,7 @@
# Django settings for sdncon project.
import os, sys
-from cassandra.ttypes import ConsistencyLevel
+#from cassandra.ttypes import ConsistencyLevel
DEBUG = True
DEBUG_PROPAGATE_EXCEPTIONS = DEBUG
@@ -31,7 +31,8 @@
DATABASES = {
'default': {
- 'ENGINE': 'django_cassandra.db',
+ #'ENGINE': 'django_cassandra.db',
+ 'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'sdncon',
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
@@ -155,7 +156,7 @@
'djangotoolbox',
'sdncon.rest',
'sdncon.controller',
- 'django_cassandra',
+ #'django_cassandra',
'sdncon.coreui',
'sdncon.clusterAdmin',
#'sdncon.account',
diff --git a/cli/setup.sh b/cli/setup.sh
index 3046003..6a1ad34 100755
--- a/cli/setup.sh
+++ b/cli/setup.sh
@@ -22,8 +22,8 @@
DJANGO_PKG=django-nonrel-20111024-be48c152abc6.zip
DJANGO_TOOLBOX_PKG=djangotoolbox-20111024-957ea5f68040.zip
-CASSANDRA_VERSION=1.0.10
-CASSANDRA_PKG=apache-cassandra-${CASSANDRA_VERSION}-bin.tar.gz
+#CASSANDRA_VERSION=1.0.10
+#CASSANDRA_PKG=apache-cassandra-${CASSANDRA_VERSION}-bin.tar.gz
THRIFT_VERSION=0.7.0
THRIFT_PKG=thrift-${THRIFT_VERSION}.tar.gz
@@ -34,8 +34,8 @@
cp ${DEPS}/${DJANGO_PKG} ${TOOLS}/
unzip -q -d ${TOOLS}/.tmp ${DEPS}/${DJANGO_TOOLBOX_PKG}
cp ${DEPS}/${DJANGO_TOOLBOX_PKG} ${TOOLS}/
-tar -z -x -C ${TOOLS} -f ${DEPS}/${CASSANDRA_PKG}
-mv ${TOOLS}/apache-cassandra-${CASSANDRA_VERSION} ${TOOLS}/cassandra
+#tar -z -x -C ${TOOLS} -f ${DEPS}/${CASSANDRA_PKG}
+#mv ${TOOLS}/apache-cassandra-${CASSANDRA_VERSION} ${TOOLS}/cassandra
tar -z -x -C ${TOOLS} -f ${DEPS}/${THRIFT_PKG}
mv ${TOOLS}/thrift-${THRIFT_VERSION} ${TOOLS}/thrift
@@ -63,28 +63,28 @@
python setup.py -q sdist -f --dist-dir=${TOOLS}
python setup.py -q install
)
-(
- cd ${TOOLS}/cassandra/interface
- ${TOOLS}/thrift/compiler/cpp/thrift --gen py --gen java cassandra.thrift
- cd gen-py
- echo -e "import distutils.core\ndistutils.core.setup(name=\"cassandra-py\", version=\"${THRIFT_VERSION}\", packages=[\"cassandra\"])" >setup.py
- python setup.py -q sdist -f --dist-dir=${TOOLS}
- python setup.py -q install
- cd ../gen-java
- cp ${TOOLS}/thrift/lib/java/build/libthrift-${THRIFT_VERSION}.jar .
- SLF4J_JAR=`ls -1 ${TOOLS}/thrift/lib/java/build/lib | grep slf4j-api`
- cp ${TOOLS}/thrift/lib/java/build/lib/${SLF4J_JAR} .
- mkdir -p build/classes
- javac -d build/classes -cp "${SLF4J_JAR}:libthrift-${THRIFT_VERSION}.jar" org/apache/cassandra/thrift/*.java
- cd build
- jar cf cassandra-thrift-${CASSANDRA_VERSION}.jar -C classes org
- #mkdir -p ${SOURCE}/sdnplatform/lib
- #cp cassandra-thrift-${CASSANDRA_VERSION}.jar ${SOURCE}/sdnplatform/lib
-)
-sed -i.old 's#/var/lib/cassandra/#'${VIRTUALENV}'/cassandra/#;s#^rpc_address: .*#rpc_address: 0.0.0.0#;s#^partitioner: .*#partitioner: org.apache.cassandra.dht.OrderPreservingPartitioner#' ${TOOLS}/cassandra/conf/cassandra.yaml
-sed -i.old 's#/var/log/cassandra/system.log#'${VIRTUALENV}'/log/cassandra.log#' ${TOOLS}/cassandra/conf/log4j-server.properties
-sed -i.old 's#^JMX_PORT=.*#JMX_PORT="8085"#' ${TOOLS}/cassandra/conf/cassandra-env.sh
-echo 'JVM_OPTS="$JVM_OPTS -Xss160k"' >> ${TOOLS}/cassandra/conf/cassandra-env.sh
+#(
+# cd ${TOOLS}/cassandra/interface
+# ${TOOLS}/thrift/compiler/cpp/thrift --gen py --gen java cassandra.thrift
+# cd gen-py
+# echo -e "import distutils.core\ndistutils.core.setup(name=\"cassandra-py\", version=\"${THRIFT_VERSION}\", packages=[\"cassandra\"])" >setup.py
+# python setup.py -q sdist -f --dist-dir=${TOOLS}
+# python setup.py -q install
+# cd ../gen-java
+# cp ${TOOLS}/thrift/lib/java/build/libthrift-${THRIFT_VERSION}.jar .
+# SLF4J_JAR=`ls -1 ${TOOLS}/thrift/lib/java/build/lib | grep slf4j-api`
+# cp ${TOOLS}/thrift/lib/java/build/lib/${SLF4J_JAR} .
+# mkdir -p build/classes
+# javac -d build/classes -cp "${SLF4J_JAR}:libthrift-${THRIFT_VERSION}.jar" org/apache/cassandra/thrift/*.java
+# cd build
+# jar cf cassandra-thrift-${CASSANDRA_VERSION}.jar -C classes org
+# #mkdir -p ${SOURCE}/sdnplatform/lib
+# #cp cassandra-thrift-${CASSANDRA_VERSION}.jar ${SOURCE}/sdnplatform/lib
+#)
+#sed -i.old 's#/var/lib/cassandra/#'${VIRTUALENV}'/cassandra/#;s#^rpc_address: .*#rpc_address: 0.0.0.0#;s#^partitioner: .*#partitioner: org.apache.cassandra.dht.OrderPreservingPartitioner#' ${TOOLS}/cassandra/conf/cassandra.yaml
+#sed -i.old 's#/var/log/cassandra/system.log#'${VIRTUALENV}'/log/cassandra.log#' ${TOOLS}/cassandra/conf/log4j-server.properties
+#sed -i.old 's#^JMX_PORT=.*#JMX_PORT="8085"#' ${TOOLS}/cassandra/conf/cassandra-env.sh
+#echo 'JVM_OPTS="$JVM_OPTS -Xss160k"' >> ${TOOLS}/cassandra/conf/cassandra-env.sh
make clean