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'),