new_contents: #! /usr/bin/env python
  
  import sys
  import tapiHelper
  import json
  import requests
  
  if len(sys.argv) != 3 and len(sys.argv) != 4:
      print "usage: execute-tapi-delete-call <onos-node> <deletion-type> [uuid]"
      print "\t- <onos-node> is onos IP. 'localhost' is invalid."
      print "\t- <deletion-type> is one of {line, client, both}, which mean line-side deletion, " \
            "client-side deletion, and all deletion respectively."
      print "\t- [uuid] is the created service uuid, which is optional. If uuid is empty, " \
            "all connectivity services with <deletion-type> will be deleted."
      print "\t  If [uuid] is not empty, and <deletion-type> is 'both', this script doesn't work."
      print "\t  Otherwise, delete line-side or client-side connectivity with specific uuid."
      print "For example, if we want to delete all client-side services on local host, the command should be:"
      print "\t python execute-tapi-delete-call.py 127.0.0.1 client"
      sys.exit(1)
  
  
  #
  # Define the input json string for service deletion.
  #
  def tapi_deletion_input(service_uuid):
      delete_input = {
          "tapi-connectivity:input":
          {
              "service-id-or-name": service_uuid
          }
      }
      return delete_input
  
  
  #
  # Return sip uuid pair of service structure
  #
  def parse_sip_uuid_pair(sv): return \
      (sv["end-point"][0]["service-interface-point"]["service-interface-point-uuid"],
       sv["end-point"][1]["service-interface-point"]["service-interface-point-uuid"])
  
  
  #
  # Find sip in sip array through sip uuid.
  #
  def find_sip(sip_uuid, sips):
      for sip in sips:
          if sip["uuid"] == sip_uuid:
              return sip
      return None
  
  
  #
  # Post service deletion request to ONOS.
  #
  def post_deletion(service_uuid, del_request):
      delete_input_json = json.dumps(tapi_deletion_input(service_uuid))
      print "\nThe json content of deletion operation for connectivity service is \n\t\t%s." % \
            delete_input_json
      headers = {'Content-type': 'application/json'}
      resp = requests.post(del_request, data=delete_input_json, headers=headers, auth=('onos', 'rocks'))
      if resp.status_code != 200:
          raise Exception('POST {}'.format(resp.status_code))
      return resp
  
  
  # 1. Parse the input params.
  node = sys.argv[1]
  del_type = sys.argv[2]
  serv_uuid = None
  assert del_type in {"line", "client", "both"}
  if len(sys.argv) == 4:
      serv_uuid = sys.argv[3]
  # 2. Get the subtree of tapi-common:context
  context_request = 'http://' + node + ':8181/onos/restconf/data/tapi-common:context'
  delete_request = 'http://' + node + ':8181/onos/restconf/operations/tapi-connectivity:delete-connectivity-service'
  context = tapiHelper.get_context(context_request)["tapi-common:context"]
  sips = context["service-interface-point"]
  try:
      services = context["tapi-connectivity:connectivity-context"]["connectivity-service"]
  except KeyError:
      print "Warning - there is no connectivity service in ONOS (%s)." % node
      sys.exit(0)
  # 3. handle deletion requests according to <deletion-type> and [uuid]
  if serv_uuid is None:
      # If [uuid] is empty, traverse all services with <deletion-type>
      service_map = {}
      del_num = 0
      for service in services:
          src, _ = parse_sip_uuid_pair(service)
          sip = find_sip(src, sips)
          if ((del_type == "line" or del_type == "both") and tapiHelper.is_photonic_media(sip)) or \
             ((del_type == "client" or del_type == "both") and tapiHelper.is_dsr_media(sip)):
              json_resp = post_deletion(service["uuid"], delete_request)
              del_num += 1
              print "Returns json string for deletion operations is\n %s\n" % json_resp
      if del_num == 0:
          print "Warning - there is no %s-side connectivity servicein ONOS (%s)." % (del_type, node)
  else:
      # If [uuid] is not empty, check the <deletion-type>
      if del_type == "both":
          print "Error - The option 'both' is illegal when [uuid] is assigned."
      else:
          is_del = False
          for service in services:
              if service["uuid"] == serv_uuid:
                  src, _ = parse_sip_uuid_pair(service)
                  sip = find_sip(src, sips)
                  if (del_type == "line" and tapiHelper.is_photonic_media(sip)) or \
                     (del_type == "client" and tapiHelper.is_dsr_media(sip)):
                      json_resp = post_deletion(service["uuid"], delete_request)
                      is_del = True
                      print "Returns json string for deletion operations is\n %s\n" % json_resp
                      break
          if not is_del:
              print "Warning - Cannot find %s-side connectivity service with service uuid %s." % (del_type, serv_uuid)
  
subject: create script execute-tapi-delete-call.py to delete ODTN services with different requirements.