Guest User

Untitled

a guest
Mar 23rd, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import sys, os
  4. from vnc_api import vnc_api
  5.  
  6. def create_NetworkPolicy(policy_name, left_network_name, right_network_name, vnc, domain, project_name):
  7.  
  8. project = vnc.project_read(fq_name = [domain, project_name])
  9.  
  10. rule = vnc_api.PolicyRuleType(direction = '<>', protocol = 'any',
  11. action_list = vnc_api.ActionListType(simple_action = 'pass'),
  12. src_addresses = [vnc_api.AddressType(virtual_network = left_network_name)],
  13. src_ports = [vnc_api.PortType(start_port = -1, end_port = -1)],
  14. dst_addresses = [vnc_api.AddressType(virtual_network = right_network_name)],
  15. dst_ports = [vnc_api.PortType(start_port = -1, end_port = -1)])
  16. policy = vnc_api.NetworkPolicy(name = policy_name, parent_obj = project, network_policy_entries = vnc_api.PolicyEntriesType([rule]))
  17.  
  18. vnc.network_policy_create(policy)
  19.  
  20. print 'Policy {} created between {} & {}'.format(policy_name, left_network_name, right_network_name)
  21.  
  22.  
  23. def add_NetworkPolicy(policy_name, network, vnc, domain, project_name):
  24.  
  25. policy = vnc.network_policy_read(fq_name = [domain, project_name, policy_name])
  26.  
  27. policy_type = vnc_api.VirtualNetworkPolicyType(sequence = vnc_api.SequenceType(major = 0, minor = 0))
  28. vn = vnc.virtual_network_read(fq_name = [domain, project_name, network])
  29. vn.add_network_policy(ref_obj = policy, ref_data = policy_type)
  30.  
  31. vnc.virtual_network_update(vn)
  32.  
  33. print 'Policy {} attached to {}'.format(policy_name, network)
  34.  
  35.  
  36. def create_VirtualNetwork(network_name, network_subnet, network_mask, vnc, domain, project_name):
  37.  
  38. """ FUNCTION TO CREATE VIRTUAL-NETWORK """
  39.  
  40. project = vnc.project_read(fq_name = [domain, project_name])
  41.  
  42. vn_obj = vnc_api.VirtualNetwork(name=network_name, parent_obj=project)
  43. vn_obj.add_network_ipam(vnc_api.NetworkIpam(),
  44. vnc_api.VnSubnetsType([vnc_api.IpamSubnetType(subnet = vnc_api.SubnetType(network_subnet,network_mask))]))
  45.  
  46. vnc.virtual_network_create(vn_obj)
  47.  
  48. print 'Network "{}" created successfully\n'.format(network_name)
  49.  
  50.  
  51. def main():
  52.  
  53. """ MAIN/AUTHENTICATE """
  54.  
  55. project_name = 'admin'
  56. domain = 'default-domain'
  57. username = 'admin'
  58. password = 'contrail123'
  59. api_server = '10.84.18.1'
  60.  
  61. left_network_name = 'left_VN'
  62. left_network_subnet = '192.168.200.0'
  63. left_network_mask = 24
  64.  
  65. right_network_name = 'right_VN'
  66. right_network_subnet = '192.168.201.0'
  67. right_network_mask = 24
  68.  
  69. policy_name = 'red-to-blue'
  70.  
  71. vnc = vnc_api.VncApi(username=username, password=password, api_server_host = api_server, tenant_name=project_name)
  72.  
  73. create_VirtualNetwork(left_network_name, left_network_subnet, left_network_mask, vnc, domain, project_name)
  74. # create_VirtualNetwork(right_network_name, right_network_subnet, right_network_mask, vnc, domain, project_name)
  75.  
  76. create_NetworkPolicy(policy_name, left_network_name, right_network_name, vnc, domain, project_name)
  77. add_NetworkPolicy(policy_name, left_network_name, vnc, domain, project_name)
  78. # add_NetworkPolicy(policy_name, right_network_name, vnc, domain, project_name)
  79.  
  80. if __name__=="__main__":
  81. main()
Add Comment
Please, Sign In to add comment