CLI support for Segment Routing Policy config
diff --git a/cli/sdncon/controller/models.py b/cli/sdncon/controller/models.py
index a3db737..25f715c 100755
--- a/cli/sdncon/controller/models.py
+++ b/cli/sdncon/controller/models.py
@@ -120,6 +120,39 @@
{'name': 'path_seq', 'rest_name': 'path-seq'},
)
+class SRPolicy(models.Model):
+
+ id_max_length = 64
+ #
+ # fields ----------------------------------------
+
+ #
+ # Unique name of the Tunnel
+ #
+ sr_policy_id = models.CharField(
+ primary_key = True,
+ verbose_name = 'SR Policy Id',
+ help_text = 'A unique Id for a SR Policy',
+ validators = [ TenantNameValidator() ],
+ max_length = id_max_length)
+
+ #
+ # end fields ----------------------------------------
+
+ def __unicode__ (self):
+ return self.tunnel_id
+
+ class CassandraSettings:
+ COMPOUND_KEY_FIELDS = ('sr_policy_id')
+
+ def delete(self):
+ super(Tunnel, self).delete()
+ class Rest:
+ NAME = 'policy-config'
+ FIELD_INFO = (
+ {'name': 'sr_policy_id', 'rest_name': 'policy-id'},
+ )
+
#
# ------------------------------------------------------------
diff --git a/cli/sdncon/rest/views.py b/cli/sdncon/rest/views.py
index f8c616b..66ec9d7 100755
--- a/cli/sdncon/rest/views.py
+++ b/cli/sdncon/rest/views.py
@@ -2136,13 +2136,35 @@
@safe_rest_view
def do_sdnplatform_tunnel_config(request):
- if request.method != 'PUT':
+ if request.method != 'PUT' and request.method != 'DELETE':
raise RestInvalidMethodException()
url = controller_url('onos', 'segmentrouting', 'tunnel')
post_data = request.raw_post_data
put_request = urllib2.Request(url, post_data)
- put_request.get_method = lambda: 'POST'
+ 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_policy_config(request):
+ if request.method != 'PUT' and request.method != 'DELETE':
+ raise RestInvalidMethodException()
+
+ url = controller_url('onos', 'segmentrouting', 'policy')
+ 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()
diff --git a/cli/sdncon/urls.py b/cli/sdncon/urls.py
index 4237d17..9857de0 100755
--- a/cli/sdncon/urls.py
+++ b/cli/sdncon/urls.py
@@ -168,8 +168,10 @@
# REST APIs for controller summary statistics
(r'^rest/v1/controller/summary$', 'sdncon.rest.views.do_sdnplatform_controller_summary'),
- # REST APIs for tunnel
+ # REST APIs for SR tunnel
(r'^rest/v1/tunnel/?$', 'sdncon.rest.views.do_sdnplatform_tunnel_config'),
+ # REST APIs for SR policy
+ (r'^rest/v1/policy/?$', 'sdncon.rest.views.do_sdnplatform_policy_config'),
)