{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "nbsphinx": "hidden" }, "outputs": [], "source": [ "import pandas as pd\n", "from pybatfish.client.session import Session\n", "from pybatfish.datamodel import *\n", "\n", "pd.set_option(\"display.width\", 300) \n", "pd.set_option(\"display.max_columns\", 30) \n", "pd.set_option(\"display.max_rows\", 1000) \n", "pd.set_option(\"display.max_colwidth\", None)\n", "\n", "# Configure all pybatfish loggers to use WARN level\n", "import logging\n", "logging.getLogger('pybatfish').setLevel(logging.WARN)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "nbsphinx": "hidden" }, "outputs": [], "source": [ "bf = Session(host=\"localhost\")\n", "\n" ] }, { "cell_type": "markdown", "id": "150b238a", "metadata": {}, "source": [ "#### Resolving Specifiers" ] }, { "cell_type": "markdown", "id": "12e8ab65", "metadata": {}, "source": [ "Specifier grammars allow you to specify complex inputs for Batfish questions.\n", "This category of questions reveals how specifier inputs are resolved\n", "by Batfish.\n" ] }, { "cell_type": "markdown", "id": "9399a80b", "metadata": {}, "source": [ "* [Resolve Location Specifier](#Resolve-Location-Specifier)\n", "* [Resolve Filter Specifier](#Resolve-Filter-Specifier)\n", "* [Resolve Node Specifier](#Resolve-Node-Specifier)\n", "* [Resolve Interface Specifier](#Resolve-Interface-Specifier)\n", "* [Resolve IPs from Location Specifier](#Resolve-IPs-from-Location-Specifier)\n", "* [Resolve IP Specifier](#Resolve-IP-Specifier)" ] }, { "cell_type": "code", "execution_count": 3, "id": "f3295cd7", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "data": { "text/plain": [ "'generate_questions'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bf.set_network('generate_questions')" ] }, { "cell_type": "code", "execution_count": 4, "id": "02c54c9c", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "data": { "text/plain": [ "'generate_questions'" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bf.set_snapshot('generate_questions')" ] }, { "cell_type": "markdown", "id": "2f4c601b", "metadata": {}, "source": [ "##### Resolve Location Specifier" ] }, { "cell_type": "markdown", "id": "f5b4b8fa", "metadata": {}, "source": [ "Returns the set of locations corresponding to a locationSpec value." ] }, { "cell_type": "markdown", "id": "d29e851e", "metadata": {}, "source": [ "Helper question that shows how specified locationSpec values resolve to the locations in the network." ] }, { "cell_type": "markdown", "id": "e6bb8e63", "metadata": {}, "source": [ "###### **Inputs**" ] }, { "cell_type": "markdown", "id": "4dabd29f", "metadata": {}, "source": [ "Name | Description | Type | Optional | Default Value\n", "--- | --- | --- | --- | --- \n", "locations | Input to the LocationSpecifier. | [LocationSpec](../specifiers.md#location-specifier) | False | \n", "grammarVersion | Version of grammar to use for resolution. | str | True | " ] }, { "cell_type": "markdown", "id": "a1facd9d", "metadata": {}, "source": [ "###### **Invocation**" ] }, { "cell_type": "code", "execution_count": 5, "id": "aad8dcb3", "metadata": {}, "outputs": [], "source": [ "result = bf.q.resolveLocationSpecifier(locations='@enter(as2border1[GigabitEthernet2/0])').answer().frame()" ] }, { "cell_type": "markdown", "id": "10bc5255", "metadata": {}, "source": [ "###### **Return Value**" ] }, { "cell_type": "markdown", "id": "b97f0fe8", "metadata": {}, "source": [ "Name | Description | Type\n", "--- | --- | ---\n", "Location | Location | str" ] }, { "cell_type": "markdown", "id": "3aabdb50", "metadata": {}, "source": [ "Print the first 5 rows of the returned Dataframe" ] }, { "cell_type": "code", "execution_count": 6, "id": "8d5ba5ea", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Location
0InterfaceLinkLocation{nodeName=as2border1, interfaceName=GigabitEthernet2/0}
\n", "
" ], "text/plain": [ " Location\n", "0 InterfaceLinkLocation{nodeName=as2border1, interfaceName=GigabitEthernet2/0}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.head(5)" ] }, { "cell_type": "markdown", "id": "3ac1ebdc", "metadata": {}, "source": [ "Print the first row of the returned Dataframe" ] }, { "cell_type": "code", "execution_count": 7, "id": "45f02827", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Location InterfaceLinkLocation{nodeName=as2border1, interfaceName=GigabitEthernet2/0}\n", "Name: 0, dtype: object" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.iloc[0]" ] }, { "cell_type": "code", "execution_count": 8, "id": "1fd6a704", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "data": { "text/plain": [ "'generate_questions'" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bf.set_network('generate_questions')" ] }, { "cell_type": "code", "execution_count": 9, "id": "caa3d350", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "data": { "text/plain": [ "'generate_questions'" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bf.set_snapshot('generate_questions')" ] }, { "cell_type": "markdown", "id": "2b3dfae7", "metadata": {}, "source": [ "##### Resolve Filter Specifier" ] }, { "cell_type": "markdown", "id": "0c255dd6", "metadata": {}, "source": [ "Returns the set of filters corresponding to a filterSpec value." ] }, { "cell_type": "markdown", "id": "821222e4", "metadata": {}, "source": [ "Helper question that shows how specified filterSpec values resolve to the filters in the network." ] }, { "cell_type": "markdown", "id": "8b1a608e", "metadata": {}, "source": [ "###### **Inputs**" ] }, { "cell_type": "markdown", "id": "803449da", "metadata": {}, "source": [ "Name | Description | Type | Optional | Default Value\n", "--- | --- | --- | --- | --- \n", "filters | Input to the FilterSpecifier. | [FilterSpec](../specifiers.md#filter-specifier) | False | \n", "grammarVersion | Version of grammar to use for resolution. | str | True | \n", "nodes | Input to the NodeSpecifier that specifies the set of nodes that should be considered. | [NodeSpec](../specifiers.md#node-specifier) | True | /.*/" ] }, { "cell_type": "markdown", "id": "633baca3", "metadata": {}, "source": [ "###### **Invocation**" ] }, { "cell_type": "code", "execution_count": 10, "id": "d604216e", "metadata": {}, "outputs": [], "source": [ "result = bf.q.resolveFilterSpecifier(filters='@in(as2border1[GigabitEthernet0/0])').answer().frame()" ] }, { "cell_type": "markdown", "id": "315d6560", "metadata": {}, "source": [ "###### **Return Value**" ] }, { "cell_type": "markdown", "id": "644e0a90", "metadata": {}, "source": [ "Name | Description | Type\n", "--- | --- | ---\n", "Node | Node | str\n", "Filter_Name | Filter name | str" ] }, { "cell_type": "markdown", "id": "90973858", "metadata": {}, "source": [ "Print the first 5 rows of the returned Dataframe" ] }, { "cell_type": "code", "execution_count": 11, "id": "6ffec489", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NodeFilter_Name
0as2border1OUTSIDE_TO_INSIDE
\n", "
" ], "text/plain": [ " Node Filter_Name\n", "0 as2border1 OUTSIDE_TO_INSIDE" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.head(5)" ] }, { "cell_type": "markdown", "id": "57a2979b", "metadata": {}, "source": [ "Print the first row of the returned Dataframe" ] }, { "cell_type": "code", "execution_count": 12, "id": "795cdbea", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Node as2border1\n", "Filter_Name OUTSIDE_TO_INSIDE\n", "Name: 0, dtype: object" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.iloc[0]" ] }, { "cell_type": "code", "execution_count": 13, "id": "d9a1f2c4", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "data": { "text/plain": [ "'generate_questions'" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bf.set_network('generate_questions')" ] }, { "cell_type": "code", "execution_count": 14, "id": "fd472cb1", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "data": { "text/plain": [ "'generate_questions'" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bf.set_snapshot('generate_questions')" ] }, { "cell_type": "markdown", "id": "c9792284", "metadata": {}, "source": [ "##### Resolve Node Specifier" ] }, { "cell_type": "markdown", "id": "99a34bcc", "metadata": {}, "source": [ "Returns the set of nodes corresponding to a nodeSpec value." ] }, { "cell_type": "markdown", "id": "daac5fca", "metadata": {}, "source": [ "Helper question that shows how specified nodeSpec values resolve to the nodes in the network." ] }, { "cell_type": "markdown", "id": "4ed3846f", "metadata": {}, "source": [ "###### **Inputs**" ] }, { "cell_type": "markdown", "id": "a74a4b6d", "metadata": {}, "source": [ "Name | Description | Type | Optional | Default Value\n", "--- | --- | --- | --- | --- \n", "nodes | Input to the NodeSpecifier. | [NodeSpec](../specifiers.md#node-specifier) | False | \n", "grammarVersion | Version of grammar to use for resolution. | str | True | " ] }, { "cell_type": "markdown", "id": "faf56ec6", "metadata": {}, "source": [ "###### **Invocation**" ] }, { "cell_type": "code", "execution_count": 15, "id": "9da7462b", "metadata": {}, "outputs": [], "source": [ "result = bf.q.resolveNodeSpecifier(nodes='/border/').answer().frame()" ] }, { "cell_type": "markdown", "id": "5d7686f2", "metadata": {}, "source": [ "###### **Return Value**" ] }, { "cell_type": "markdown", "id": "36bf870d", "metadata": {}, "source": [ "Name | Description | Type\n", "--- | --- | ---\n", "Node | Node | str" ] }, { "cell_type": "markdown", "id": "c9afc28d", "metadata": {}, "source": [ "Print the first 5 rows of the returned Dataframe" ] }, { "cell_type": "code", "execution_count": 16, "id": "fa25d172", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Node
0as1border1
1as1border2
2as2border1
3as2border2
4as3border1
\n", "
" ], "text/plain": [ " Node\n", "0 as1border1\n", "1 as1border2\n", "2 as2border1\n", "3 as2border2\n", "4 as3border1" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.head(5)" ] }, { "cell_type": "markdown", "id": "ef4bfd0d", "metadata": {}, "source": [ "Print the first row of the returned Dataframe" ] }, { "cell_type": "code", "execution_count": 17, "id": "aaf6c9df", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Node as1border1\n", "Name: 0, dtype: object" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.iloc[0]" ] }, { "cell_type": "code", "execution_count": 18, "id": "bed27d21", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "data": { "text/plain": [ "'generate_questions'" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bf.set_network('generate_questions')" ] }, { "cell_type": "code", "execution_count": 19, "id": "1a6cdc4f", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "data": { "text/plain": [ "'generate_questions'" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bf.set_snapshot('generate_questions')" ] }, { "cell_type": "markdown", "id": "77f3e17d", "metadata": {}, "source": [ "##### Resolve Interface Specifier" ] }, { "cell_type": "markdown", "id": "80bd14c7", "metadata": {}, "source": [ "Returns the set of interfaces corresponding to an interfaceSpec value." ] }, { "cell_type": "markdown", "id": "c67dfaf6", "metadata": {}, "source": [ "Helper question that shows how specified interfaceSpec values resolve to the interfaces in the network." ] }, { "cell_type": "markdown", "id": "7b4248e5", "metadata": {}, "source": [ "###### **Inputs**" ] }, { "cell_type": "markdown", "id": "aa5b07a2", "metadata": {}, "source": [ "Name | Description | Type | Optional | Default Value\n", "--- | --- | --- | --- | --- \n", "interfaces | Input to the interfaceSpecifier. | [InterfaceSpec](../specifiers.md#interface-specifier) | False | \n", "grammarVersion | Version of grammar to use for resolution. | str | True | \n", "nodes | Input to the NodeSpecifier that specifies the set of nodes that should be considered. | [NodeSpec](../specifiers.md#node-specifier) | True | /.*/" ] }, { "cell_type": "markdown", "id": "d2d4e222", "metadata": {}, "source": [ "###### **Invocation**" ] }, { "cell_type": "code", "execution_count": 20, "id": "d4cd0260", "metadata": {}, "outputs": [], "source": [ "result = bf.q.resolveInterfaceSpecifier(interfaces='/border/[.*Ethernet]').answer().frame()" ] }, { "cell_type": "markdown", "id": "dfe6e6e6", "metadata": {}, "source": [ "###### **Return Value**" ] }, { "cell_type": "markdown", "id": "3ba6ffa3", "metadata": {}, "source": [ "Name | Description | Type\n", "--- | --- | ---\n", "Interface | Interface | [Interface](../datamodel.rst#pybatfish.datamodel.primitives.Interface)" ] }, { "cell_type": "markdown", "id": "45a71e1e", "metadata": {}, "source": [ "Print the first 5 rows of the returned Dataframe" ] }, { "cell_type": "code", "execution_count": 21, "id": "9154131e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Interface
0as1border1[Ethernet0/0]
1as1border1[GigabitEthernet0/0]
2as1border1[GigabitEthernet1/0]
3as1border2[Ethernet0/0]
4as1border2[GigabitEthernet0/0]
\n", "
" ], "text/plain": [ " Interface\n", "0 as1border1[Ethernet0/0]\n", "1 as1border1[GigabitEthernet0/0]\n", "2 as1border1[GigabitEthernet1/0]\n", "3 as1border2[Ethernet0/0]\n", "4 as1border2[GigabitEthernet0/0]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.head(5)" ] }, { "cell_type": "markdown", "id": "8a27447d", "metadata": {}, "source": [ "Print the first row of the returned Dataframe" ] }, { "cell_type": "code", "execution_count": 22, "id": "4c891961", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Interface as1border1[Ethernet0/0]\n", "Name: 0, dtype: object" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.iloc[0]" ] }, { "cell_type": "code", "execution_count": 23, "id": "648049e3", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "data": { "text/plain": [ "'generate_questions'" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bf.set_network('generate_questions')" ] }, { "cell_type": "code", "execution_count": 24, "id": "6d9d130c", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "data": { "text/plain": [ "'generate_questions'" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bf.set_snapshot('generate_questions')" ] }, { "cell_type": "markdown", "id": "c7f5f1c8", "metadata": {}, "source": [ "##### Resolve IPs from Location Specifier" ] }, { "cell_type": "markdown", "id": "42143962", "metadata": {}, "source": [ "Returns IPs that are auto-assigned to locations." ] }, { "cell_type": "markdown", "id": "180fff1b", "metadata": {}, "source": [ "Helper question that shows IPs that will be assigned to specified locationSpec values by questions are automatically pick IPs based on locations." ] }, { "cell_type": "markdown", "id": "e4f8eed0", "metadata": {}, "source": [ "###### **Inputs**" ] }, { "cell_type": "markdown", "id": "7d1fefc3", "metadata": {}, "source": [ "Name | Description | Type | Optional | Default Value\n", "--- | --- | --- | --- | --- \n", "locations | Input to the LocationSpecifier. | [LocationSpec](../specifiers.md#location-specifier) | False | \n", "grammarVersion | Version of grammar to use for resolution. | str | True | " ] }, { "cell_type": "markdown", "id": "54de41f7", "metadata": {}, "source": [ "###### **Invocation**" ] }, { "cell_type": "code", "execution_count": 25, "id": "81fc4a05", "metadata": {}, "outputs": [], "source": [ "result = bf.q.resolveIpsOfLocationSpecifier(locations='@enter(as2border1[GigabitEthernet2/0])').answer().frame()" ] }, { "cell_type": "markdown", "id": "89662471", "metadata": {}, "source": [ "###### **Return Value**" ] }, { "cell_type": "markdown", "id": "e389bf52", "metadata": {}, "source": [ "Name | Description | Type\n", "--- | --- | ---\n", "Locations | Resolution | str\n", "IP_Space | IP space | str" ] }, { "cell_type": "markdown", "id": "832d839d", "metadata": {}, "source": [ "Print the first 5 rows of the returned Dataframe" ] }, { "cell_type": "code", "execution_count": 26, "id": "8dc7b2d4", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LocationsIP_Space
0[InterfaceLinkLocation{nodeName=as2border1, interfaceName=GigabitEthernet2/0}]AclIpSpace{lines=[AclIpSpaceLine{action=DENY, ipSpace=AclIpSpace{lines=[AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.2.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.1.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.3.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.2.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.2.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.1.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.0.2.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.0.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.128.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.128.0.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.0.2.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.0.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.0.1.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.0.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.0.1.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.0.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.3.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.1.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.10.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.10.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.13.22.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.21.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.22.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.12.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.11.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.12.11.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.13.22.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.12.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.22.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.21.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.11.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.12.11.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.14.22.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.23.21.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.12.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.22.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.21.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.11.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.21.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.22.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.12.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.11.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.23.21.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.34.201.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.34.101.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.34.201.4}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.34.101.4}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=90.90.90.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=90.90.90.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.128.1.101}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.128.0.101}}]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[2.12.12.0, 2.12.12.255], whitelist=[2.12.12.0/24]}}]}
\n", "
" ], "text/plain": [ " Locations \\\n", "0 [InterfaceLinkLocation{nodeName=as2border1, interfaceName=GigabitEthernet2/0}] \n", "\n", " IP_Space \n", "0 AclIpSpace{lines=[AclIpSpaceLine{action=DENY, ipSpace=AclIpSpace{lines=[AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.2.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.1.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.3.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.2.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.2.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.1.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.0.2.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.0.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.128.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.128.0.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.0.2.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.0.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.0.1.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.0.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.0.1.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.0.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.3.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.1.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.10.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.10.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.13.22.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.21.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.22.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.12.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.11.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.12.11.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.13.22.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.12.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.22.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.21.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.11.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.12.11.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.14.22.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.23.21.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.12.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.22.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.21.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.11.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.21.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.22.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.12.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.11.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.23.21.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.34.201.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.34.101.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.34.201.4}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.34.101.4}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=90.90.90.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=90.90.90.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.128.1.101}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.128.0.101}}]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[2.12.12.0, 2.12.12.255], whitelist=[2.12.12.0/24]}}]} " ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.head(5)" ] }, { "cell_type": "markdown", "id": "568cd187", "metadata": {}, "source": [ "Print the first row of the returned Dataframe" ] }, { "cell_type": "code", "execution_count": 27, "id": "d6c0d3e0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Locations [InterfaceLinkLocation{nodeName=as2border1, interfaceName=GigabitEthernet2/0}]\n", "IP_Space AclIpSpace{lines=[AclIpSpaceLine{action=DENY, ipSpace=AclIpSpace{lines=[AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.2.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.1.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.3.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.2.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.2.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.1.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.0.2.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.0.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.128.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.128.0.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.0.2.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.0.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.0.1.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.0.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.0.1.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.0.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.3.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.2.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.1.1.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=3.10.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=1.10.1.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.13.22.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.21.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.22.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.12.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.11.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.12.11.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.13.22.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.12.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.22.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.21.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.12.11.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.12.11.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.14.22.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.23.21.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.12.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.22.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.21.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.11.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.21.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.22.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.12.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.23.11.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=10.23.21.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.34.201.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.34.101.3}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.34.201.4}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.34.101.4}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=90.90.90.2}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=90.90.90.1}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.128.1.101}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpIpSpace{ip=2.128.0.101}}]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[2.12.12.0, 2.12.12.255], whitelist=[2.12.12.0/24]}}]}\n", "Name: 0, dtype: object" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.iloc[0]" ] }, { "cell_type": "code", "execution_count": 28, "id": "ba0df672", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "data": { "text/plain": [ "'generate_questions'" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bf.set_network('generate_questions')" ] }, { "cell_type": "code", "execution_count": 29, "id": "8f32a9ad", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "data": { "text/plain": [ "'generate_questions'" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bf.set_snapshot('generate_questions')" ] }, { "cell_type": "markdown", "id": "dc6aa792", "metadata": {}, "source": [ "##### Resolve IP Specifier" ] }, { "cell_type": "markdown", "id": "3a6c370b", "metadata": {}, "source": [ "Returns the IP address space corresponding to an ipSpec value." ] }, { "cell_type": "markdown", "id": "20a4447c", "metadata": {}, "source": [ "Helper question that shows how specified ipSpec values resolve to IPs." ] }, { "cell_type": "markdown", "id": "e66ae598", "metadata": {}, "source": [ "###### **Inputs**" ] }, { "cell_type": "markdown", "id": "19015700", "metadata": {}, "source": [ "Name | Description | Type | Optional | Default Value\n", "--- | --- | --- | --- | --- \n", "ips | Input to the IP space specifier. | [IpSpec](../specifiers.md#ip-specifier) | False | \n", "grammarVersion | Version of grammar to use for resolution. | str | True | " ] }, { "cell_type": "markdown", "id": "604ce9e0", "metadata": {}, "source": [ "###### **Invocation**" ] }, { "cell_type": "code", "execution_count": 30, "id": "37d20d1e", "metadata": {}, "outputs": [], "source": [ "result = bf.q.resolveIpSpecifier(ips='/border/[.*Ethernet]').answer().frame()" ] }, { "cell_type": "markdown", "id": "559d0244", "metadata": {}, "source": [ "###### **Return Value**" ] }, { "cell_type": "markdown", "id": "2d9fe877", "metadata": {}, "source": [ "Name | Description | Type\n", "--- | --- | ---\n", "IP_Space | IP space | str" ] }, { "cell_type": "markdown", "id": "64a26393", "metadata": {}, "source": [ "Print the first 5 rows of the returned Dataframe" ] }, { "cell_type": "code", "execution_count": 31, "id": "58d7d0e8", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IP_Space
0AclIpSpace{lines=[AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[1.0.1.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.12.11.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.13.22.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[1.0.2.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.14.22.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.12.11.2]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[2.12.11.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[2.12.12.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.23.21.2]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[2.12.22.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[2.12.21.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[3.0.1.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.23.21.3]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.13.22.3]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[3.0.2.1]}}]}
\n", "
" ], "text/plain": [ " IP_Space\n", "0 AclIpSpace{lines=[AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[1.0.1.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.12.11.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.13.22.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[1.0.2.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.14.22.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.12.11.2]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[2.12.11.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[2.12.12.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.23.21.2]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[2.12.22.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[2.12.21.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[3.0.1.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.23.21.3]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.13.22.3]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[3.0.2.1]}}]}" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.head(5)" ] }, { "cell_type": "markdown", "id": "2fbd4623", "metadata": {}, "source": [ "Print the first row of the returned Dataframe" ] }, { "cell_type": "code", "execution_count": 32, "id": "365ca46b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "IP_Space AclIpSpace{lines=[AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[1.0.1.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.12.11.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.13.22.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[1.0.2.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.14.22.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.12.11.2]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[2.12.11.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[2.12.12.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.23.21.2]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[2.12.22.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[2.12.21.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[3.0.1.1]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.23.21.3]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[10.13.22.3]}}, AclIpSpaceLine{action=PERMIT, ipSpace=IpWildcardSetIpSpace{blacklist=[], whitelist=[3.0.2.1]}}]}\n", "Name: 0, dtype: object" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.iloc[0]" ] } ], "metadata": { "celltoolbar": "Edit Metadata", "hide_input": false, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.17" } }, "nbformat": 4, "nbformat_minor": 2 }