Tunnel loadbalancing policy: phase1 support
diff --git a/sdncon/controller/models.py b/sdncon/controller/models.py
index 88ac7ad..2c1c129 100755
--- a/sdncon/controller/models.py
+++ b/sdncon/controller/models.py
@@ -64,6 +64,36 @@
"""
return int(time.time()*1000000)
+class Tunnelset(models.Model):
+
+ id_max_length = 64
+ #
+ # fields ----------------------------------------
+
+ #
+ # Unique name of the Tunnel
+ #
+ tunnelset_id = models.CharField(
+ primary_key = True,
+ verbose_name = 'Tunnelset Id',
+ help_text = 'A unique Id for a Tunnelset',
+ validators = [ TenantNameValidator() ],
+ max_length = id_max_length)
+
+ #
+ # end fields ----------------------------------------
+
+ def __unicode__ (self):
+ return self.tunnelset_id
+
+ def delete(self):
+ super(Tunnelset, self).delete()
+ class Rest:
+ NAME = 'tunnelset-config'
+ FIELD_INFO = (
+ {'name': 'tunnelset_id', 'rest_name': 'tunnelset-id'},
+ )
+
class Tunnel(models.Model):
id_max_length = 64
diff --git a/sdncon/rest/views.py b/sdncon/rest/views.py
index 750cc1c..3bcc48a 100755
--- a/sdncon/rest/views.py
+++ b/sdncon/rest/views.py
@@ -2144,6 +2144,25 @@
return HttpResponse(simplejson.dumps(jsondict), JSON_CONTENT_TYPE)
@safe_rest_view
+def do_sdnplatform_tunnelset_config(request):
+ if request.method != 'PUT' and request.method != 'DELETE':
+ raise RestInvalidMethodException()
+
+ url = controller_url('onos', 'segmentrouting', 'tunnelset')
+ post_data = request.raw_post_data
+ put_request = urllib2.Request(url, post_data)
+ method = request.method
+ if method == 'PUT':
+ method = 'POST'
+ put_request.get_method = lambda: method
+ put_request.add_header('Content-Type', 'application/json')
+ response = urllib2.urlopen(put_request)
+ response_text = response.read()
+ response = HttpResponse(response_text, JSON_CONTENT_TYPE)
+
+ return response
+
+@safe_rest_view
def do_sdnplatform_tunnel_config(request):
if request.method != 'PUT' and request.method != 'DELETE':
raise RestInvalidMethodException()
@@ -2192,6 +2211,16 @@
return get_sdnplatform_response(url)
@safe_rest_view
+def do_show_tunnelset(request):
+ #if request.method != 'GET':
+ # raise RestInvalidMethodException()
+
+ url = controller_url('onos', 'segmentrouting','tunnelset')
+ if request.META['QUERY_STRING']:
+ url += '?' + request.META['QUERY_STRING']
+ return get_sdnplatform_response(url)
+
+@safe_rest_view
def do_show_policy(request):
#if request.method != 'GET':
# raise RestInvalidMethodException()
diff --git a/sdncon/sdncon b/sdncon/sdncon
deleted file mode 100644
index e7fcf37..0000000
--- a/sdncon/sdncon
+++ /dev/null
Binary files differ
diff --git a/sdncon/urls.py b/sdncon/urls.py
index c00805d..a0b1605 100755
--- a/sdncon/urls.py
+++ b/sdncon/urls.py
@@ -171,8 +171,10 @@
(r'^rest/v1/controller/summary$', 'sdncon.rest.views.do_sdnplatform_controller_summary'),
# REST APIs for SR tunnel
+ (r'^rest/v1/tunnelset/?$', 'sdncon.rest.views.do_sdnplatform_tunnelset_config'),
(r'^rest/v1/tunnel/?$', 'sdncon.rest.views.do_sdnplatform_tunnel_config'),
(r'^rest/v1/showtunnel/?$', 'sdncon.rest.views.do_show_tunnel'),
+ (r'^rest/v1/showtunnelset/?$', 'sdncon.rest.views.do_show_tunnelset'),
# REST APIs for SR policy
(r'^rest/v1/showpolicy/?$', 'sdncon.rest.views.do_show_policy'),
(r'^rest/v1/policy/?$', 'sdncon.rest.views.do_sdnplatform_policy_config'),