Split NIC BoD script into setup vs intent creation
[nemo.git] / nemo-impl / src / test / resources / nic-bod-intent.py
1 #!/usr/bin/python
2
3 # This script deletes and recreates the NIC BoD intents.
4 # Use nic-bod-setup.py to set up the physical network and NEMO nodes first
5
6 import requests,json
7 import argparse, sys
8 from requests.auth import HTTPBasicAuth
9
10 USERNAME='admin'
11 PASSWORD='admin'
12
13 NIC_INTENTS="http://%s:8181/restconf/config/intent:intents"
14 NIC_INTENT="http://%s:8181/restconf/config/intent:intents/intent/14ce424a-3e50-4a2a-ad5c-b29845158c8b"
15
16
17 def delete_nic_intents(contHost):
18         delete(NIC_INTENTS % contHost)
19
20 def create_nic_intent(contHost):
21         data = {
22                 "intent": {
23                         "id": "14ce424a-3e50-4a2a-ad5c-b29845158c8b",
24                         "actions": [
25                                 {
26          "order": 1,
27                                         "allow": {}
28                                 }
29      ],
30      "subjects": [
31              {
32          "order": 1 ,
33                      "end-point-group": { "name": "dmz" }
34              }, {
35           "order": 2 ,
36                      "end-point-group": { "name": "interior" }
37              }
38      ],
39      "constraints": [
40              {
41           "order": 1,
42                      "bandwidth-constraint": { "bandwidth": "10G" }
43              }
44      ],
45      "conditions": [
46              {
47           "order": 1,
48                      "daily": { "start-time": "08:00:00Z", "duration": "10h" }
49              }
50      ]
51 }
52                 }
53         put(NIC_INTENT % contHost, data)
54
55
56 def post(url, data):
57     headers = {'Content-type': 'application/yang.data+json',
58                'Accept': 'application/yang.data+json'}
59     print "POST %s" % url
60     print json.dumps(data, indent=4, sort_keys=True)
61     r = requests.post(url, data=json.dumps(data), headers=headers, auth=HTTPBasicAuth(USERNAME, PASSWORD))
62     print r.text
63     r.raise_for_status()
64
65 def put(url, data):
66     headers = {'Content-type': 'application/yang.data+json',
67                'Accept': 'application/yang.data+json'}
68     print "PUT %s" % url
69     print json.dumps(data, indent=4, sort_keys=True)
70     r = requests.put(url, data=json.dumps(data), headers=headers, auth=HTTPBasicAuth(USERNAME, PASSWORD))
71     print r.text
72     r.raise_for_status()
73
74 def delete(url):
75     headers = {'Content-type': 'application/yang.data+json',
76                'Accept': 'application/yang.data+json'}
77     print "DELETE %s" % url
78     r = requests.delete(url, headers=headers, auth=HTTPBasicAuth(USERNAME, PASSWORD))
79     print r.text
80     r.raise_for_status()
81
82
83 if __name__ == '__main__':
84
85         parser = argparse.ArgumentParser()
86         parser.add_argument('--controller', default='127.0.0.1', help='controller IP')
87         args=parser.parse_args()
88
89         delete_nic_intents(args.controller)
90         create_nic_intent(args.controller)