Library API Tutorial ==================== This tutorial will detail the steps necessary to create couple of virtual-networks and associate a policy on them such that only http traffic can pass. The next section generalizes the examples mentioned in this tutorial. Initialize the library ---------------------- A single import of the vnc_api module from vnc_api package is sufficient to interact with the configuration API server. >>> from vnc_api import vnc_api >>> vnc_lib = vnc_api.VncApi(api_server_host='10.84.14.2') Create virtual-network and network-policy objects ------------------------------------------------- To create virtual-networks *vn-red* and *vn-blue* and network-policy *policy-red-blue* >>> vn_blue_obj = vnc_api.VirtualNetwork('vn-blue') >>> vn_blue_obj.add_network_ipam(vnc_api.NetworkIpam(), ... vnc_api.VnSubnetsType([vnc_api.IpamSubnetType(subnet = vnc_api.SubnetType('10.1.1.0', 24))])) >>> vnc_lib.virtual_network_create(vn_blue_obj) u'57603abb-0089-4a89-b44b-8ca71d4b7826' >>> vn_red_obj = vnc_api.VirtualNetwork('vn-red') >>> vn_red_obj.add_network_ipam(vnc_api.NetworkIpam(), ... vnc_api.VnSubnetsType([vnc_api.IpamSubnetType(subnet = vnc_api.SubnetType('20.1.1.0', 24))])) >>> vnc_lib.virtual_network_create(vn_red_obj) u'5de3af3e-269f-40be-b0f6-69d6bb962a9f' >>> policy_obj = vnc_api.NetworkPolicy('policy-red-blue', ... network_policy_entries = vnc_api.PolicyEntriesType([vnc_api.PolicyRuleType(direction='<>', ... action_list = vnc_api.ActionListType(simple_action='pass'), protocol = 'tcp', ... src_addresses = [vnc_api.AddressType(virtual_network = vn_blue_obj.get_fq_name_str())], ... src_ports = [vnc_api.PortType(-1, -1)], ... dst_addresses = [vnc_api.AddressType(virtual_network = vn_red_obj.get_fq_name_str())], ... dst_ports = [vnc_api.PortType(80, 80)])])) >>> vnc_lib.network_policy_create(policy_obj) u'51388604-c59e-4169-9e0f-39bfcdc603f0' Update virtual-networks to use the policy ----------------------------------------- To associate the *policy-red-blue* with the virtual networks: >>> vn_blue_obj.add_network_policy(policy_obj, vnc_api.VirtualNetworkPolicyType( sequence=vnc_api.SequenceType(0, 0))) >>> vn_red_obj.add_network_policy(policy_obj, vnc_api.VirtualNetworkPolicyType( sequence=vnc_api.SequenceType(0, 0))) >>> vnc_lib.virtual_network_update(vn_blue_obj) u'{"virtual-network": {"href": "http://10.84.14.2:8082/virtual-network/57603abb-0089-4a89-b44b-8ca71d4b7826", "uuid": "57603abb-0089-4a89-b44b-8ca71d4b7826"}}' >>> vnc_lib.virtual_network_update(vn_red_obj) u'{"virtual-network": {"href": "http://10.84.14.2:8082/virtual-network/5de3af3e-269f-40be-b0f6-69d6bb962a9f", "uuid": "5de3af3e-269f-40be-b0f6-69d6bb962a9f"}}' Read the objects to verify ----------------------------- An object can be read by using its uuid returned by create... >>> print vnc_lib.virtual_network_read(id = vn_blue_obj.uuid) ... or by its fully-qualified name. >>> print vnc_lib.virtual_network_read(fq_name = ['default-domain', 'default-project', 'vn-blue']) List the virtual-networks ------------------------- A summary collection of objects can be listed by >>> print vnc_lib.virtual_networks_list() A detailed collection (**Warning** depending on collection size it might transfer a lot of data) of objects can be listed by >>> print vnc_lib.virtual_networks_list(detail=True) A subset collection of objects can be listed by >>> print vnc_lib.virtual_networks_list( obj_uuids=['57603abb-0089-4a89-b44b-8ca71d4b7826', '5de3af3e-269f-40be-b0f6-69d6bb962a9f'], detail=True) A subset collection of objects anchored by a parent can be listed by >>> print vnc_lib.virtual_networks_list(parent_id='83a4bea4-ec45-4670-950c-d7f0f98e0e4f') Delete the objects -------------------- An object can be deleted using its uuid... >>> vnc_lib.virtual_network_delete(id = '57603abb-0089-4a89-b44b-8ca71d4b7826') ... or by its fully-qualified name >>> vnc_lib.virtual_network_delete(fq_name = ['default-domain', 'default-project', 'vn-blue'])