def test_sanity_crud_read_interface(self):
        address = ysanity.Native.Interface.Loopback.Ipv4.Address()
        address.ip = "2.2.2.2"
        address.netmask = "255.255.255.255"

        loopback = ysanity.Native.Interface.Loopback()
        loopback.name = 2222
        loopback.ipv4.address.append(address)

        native = ysanity.Native()
        native.interface.loopback.append(loopback)

        crud = CRUDService()
        result = crud.create(self.ncc, native)
        self.assertEqual(result, True)

        native_read = ysanity.Native()
        interfaces = crud.read(self.ncc, native_read)

        codec_service = CodecService()
        codec_provider = CodecServiceProvider()
        codec_provider.encoding = EncodingFormat.XML

        xml_encode = codec_service.encode(codec_provider, interfaces)
        print('\n===== Printing entity: {}'.format(interfaces))
        print(xml_encode)

        # Delete configuration
        result = crud.delete(self.ncc, native)
        self.assertEqual(result, True)
Exemple #2
0
 def setUpClass(self):
     self.codec_provider = CodecServiceProvider()
     self.codec = CodecService()
     self.repo = Repository(get_local_repo_dir())
     self.provider = gNMIServiceProvider( self.repo, "127.0.0.1", "admin", "admin", port=50051)
     self.schema = self.provider.get_session().get_root_schema()
     self.crud = CRUDService()
 def setUpClass(cls):
     cls.ncc = NetconfServiceProvider(cls.hostname, cls.username,
                                      cls.password, cls.port, cls.protocol,
                                      cls.on_demand, cls.common_cache,
                                      cls.timeout)
     cls.executor = ExecutorService()
     cls.codec = CodecService()
     cls.codec_provider = CodecServiceProvider(type=EncodingFormat.XML)
Exemple #4
0
def prepare_config(datafile):
    data = ''
    # read xml file passes
    with open(datafile) as fh:
        data = fh.read()

    #associate this with codec service to get an ydk object
    codec = CodecService()
    return codec.decode(CodecServiceProvider(type='xml'), data)
Exemple #5
0
    def test_anyxml(self):
        provider = CodecServiceProvider(type='xml')
        payload = '<?xml version="1.0"?><runner xmlns="http://cisco.com/ns/yang/ydktest-sanity"/>'
        result = self.codec.decode(provider, payload)
        self.assertIsNotNone(result)

        payload = '''<?xml version="1.0"?>
        <runner xmlns="http://cisco.com/ns/yang/ydktest-sanity"/>'''
        result = self.codec.decode(provider, payload)
        self.assertIsNotNone(result)
    def test_crud_read_collection(self):
        crud = CRUDService()

        # Build configuration of multiple objects
        create_list = Config()

        native = ysanity.Native()
        native.hostname = 'NativeHost'
        native.version = '0.1.0'
        create_list.append(native)

        bgp = openconfig.Bgp()
        bgp.global_.config.as_ = 65001
        bgp.global_.config.router_id = "1.2.3.4"
        create_list.append(bgp)

        create_list = Config([native, bgp])

        # Configure device
        result = crud.create(self.ncc, create_list)
        self.assertEqual(result, True)

        # Read configuration
        read_filter = Filter([ysanity.Native(),
                              openconfig.Bgp()])
        read_config = crud.read(self.ncc, read_filter)
        self.assertEqual(isinstance(read_config, Config), True)
        self.assertEqual(len(read_config), 2)

        # Print configuration
        codec_service = CodecService()
        codec_provider = CodecServiceProvider()
        codec_provider.encoding = EncodingFormat.XML
        for entity in read_config:
            xml = codec_service.encode(codec_provider, entity)
            print('\n===== Printing entity: {}'.format(entity))
            print(xml)

        # Delete configuration
        result = crud.delete(self.ncc, create_list)
        self.assertEqual(result, True)
    def setUpClass(self):
        self.codec = CodecService()
        self.provider = CodecServiceProvider(type='xml')

        self._enum_payload_1 = \
'<built-in-t xmlns="http://cisco.com/ns/yang/ydktest-sanity">\n  <enum-value>local</enum-value>\n</built-in-t>\n'

        self._enum_payload_2 = \
'<runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">\n  <ytypes>\n    <built-in-t>\n      <enum-value>local</enum-value>\n    </built-in-t>\n  </ytypes>\n</runner>\n'

        self._runner_payload = \
'<runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">\n\
Exemple #8
0
    def test_list_no_keys(self):
        payload = '''<runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <no-key-list>
    <test>abc</test>
  </no-key-list>
  <no-key-list>
    <test>xyz</test>
  </no-key-list>
</runner>'''
        xml_provider = CodecServiceProvider(type='xml')
        no_key = self.codec.decode(xml_provider, payload)
        no_key_payload = self.codec.encode(xml_provider, no_key, subtree=True)
        self.assertEqual(payload, no_key_payload)
Exemple #9
0
 def test_encode_decode(self):
     intf = interface_configurations.InterfaceConfigurations()
     iss = intf.InterfaceConfiguration()
     iss.active = 'act'
     iss.interface_name = 'Loopback0'
     iss.vrf = 'red'
     intf.interface_configuration.append(iss)
     codec = CodecService()
     codec_p = CodecServiceProvider(type='json')
     json = codec.encode(codec_p, intf)
     print(json)
     obj = codec.decode(codec_p, json)
     print(obj)
Exemple #10
0
    def test_sanity_crud_read_interface(self):
        enable_logging(logging.ERROR)

        address = ysanity.Native.Interface.Loopback.Ipv4.Address();
        address.ip = "2.2.2.2"
        address.netmask = "255.255.255.255"

        loopback = ysanity.Native.Interface.Loopback()
        loopback.name = 2222
        loopback.ipv4.address.append(address)

        native = ysanity.Native()
        native.interface.loopback.append(loopback)

        crud = CRUDService()
        result = crud.create(self.ncc, native)

        native_read = ysanity.Native()
        interfaces = crud.read(self.ncc, native_read)

        codec_service = CodecService()
        codec_provider = CodecServiceProvider()
        codec_provider.encoding = EncodingFormat.XML
        xml_encode = codec_service.encode(codec_provider, interfaces)
    def setUpClass(cls):
        tmp_dir = tempfile.mkdtemp()
        repo = Repository(tmp_dir)

        cls.ncc_empty_repo = NetconfServiceProvider(repo, cls.hostname,
                                                    cls.username, cls.password,
                                                    cls.port, cls.protocol,
                                                    cls.on_demand)
        cls.ncc = NetconfServiceProvider(cls.hostname, cls.username,
                                         cls.password, cls.port, cls.protocol,
                                         cls.on_demand, cls.common_cache)
        cls.crud = CRUDService()

        cls.codec_provider = CodecServiceProvider()
        cls.codec = CodecService()
Exemple #12
0
    def setUpClass(self):
        self.codec = CodecService()
        self.provider = CodecServiceProvider(type='xml')

        self._enum_payload_1 = '''<built-in-t xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <enum-value>local</enum-value>
</built-in-t>
'''

        self._enum_payload_2 = '''<runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <ytypes>
    <built-in-t>
      <enum-value>local</enum-value>
    </built-in-t>
  </ytypes>
</runner>
'''

        self._runner_payload = '''<runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <two-list>
    <ldata>
      <number>21</number>
      <name>runner:twolist:ldata[21]:name</name>
      <subl1>
        <number>211</number>
        <name>runner:twolist:ldata[21]:subl1[211]:name</name>
      </subl1>
      <subl1>
        <number>212</number>
        <name>runner:twolist:ldata[21]:subl1[212]:name</name>
      </subl1>
    </ldata>
    <ldata>
      <number>22</number>
      <name>runner:twolist:ldata[22]:name</name>
      <subl1>
        <number>221</number>
        <name>runner:twolist:ldata[22]:subl1[221]:name</name>
      </subl1>
      <subl1>
        <number>222</number>
        <name>runner:twolist:ldata[22]:subl1[222]:name</name>
      </subl1>
    </ldata>
  </two-list>
</runner>
'''
        self._oc_pattern_payload = '''<oc-A xmlns="http://cisco.com/ns/yang/oc-pattern">
Exemple #13
0
def _get_decoded_entity():
    from ydk.providers import CodecServiceProvider
    from ydk.services import CodecService

    payload = '''
    <system xmlns="urn:ietf:params:xml:ns:yang:ietf-system">
        <contact>[email protected]</contact>
        <hostname>1.2.3.4</hostname>
        <clock>
          <timezone-name>Argentina</timezone-name>
        </clock>
        <ntp>
          <server>
            <name>xyz</name>
            <udp>
              <address>1.2.3.4</address>
              <port>22</port>
            </udp>
            <association-type>peer</association-type>
          </server>
        </ntp>
        <dns-resolver>
          <search>abc.com</search>
          <search>fff.com</search>
          <server>
            <name>abc</name>
            <udp-and-tcp>
              <address>1.2.3.4</address>
              <port>830</port>
            </udp-and-tcp>
          </server>
        </dns-resolver>
        <authentication>
          <user>
            <name>guest</name>
            <password>guest</password>
          </user>
          <user>
            <name>admin</name>
            <password>admin</password>
          </user>
        </authentication>
      </system>
    '''
    codec = CodecService()
    provider = CodecServiceProvider(type='xml')
    return codec.decode(provider, payload)
Exemple #14
0
    def test_embedded_quote_leaflist_value(self):
        xml = '''<routing-policy xmlns="http://openconfig.net/yang/routing-policy">
  <defined-sets>
    <bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy">
      <community-sets>
        <community-set>
          <community-set-name>COMMUNITY-SET1</community-set-name>
          <config>
            <community-member>ios-regex '^65172:17...$'</community-member>
            <community-member>65172:16001</community-member>
            <community-set-name>COMMUNITY-SET1</community-set-name>
          </config>
          <state>
            <community-member>ios-regex '^65172:17...$'</community-member>
            <community-member>65172:16001</community-member>
            <community-set-name>COMMUNITY-SET1</community-set-name>
          </state>
        </community-set>
      </community-sets>
    </bgp-defined-sets>
  </defined-sets>
</routing-policy>
'''
        from ydk.models.ydktest import openconfig_routing_policy \
            as oc_routing_policy
        routing_policy = oc_routing_policy.RoutingPolicy()

        com = oc_routing_policy.RoutingPolicy.DefinedSets.BgpDefinedSets.CommunitySets.CommunitySet(
        )
        com.community_set_name = "COMMUNITY-SET1"
        com.config.community_set_name = "COMMUNITY-SET1"
        com.config.community_member.append("ios-regex '^65172:17...$'")
        com.config.community_member.append("65172:16001")

        com.state.community_set_name = "COMMUNITY-SET1"
        com.state.community_member.append("ios-regex '^65172:17...$'")
        com.state.community_member.append("65172:16001")

        routing_policy.defined_sets.bgp_defined_sets.community_sets.community_set.append(
            com)
        xml_provider = CodecServiceProvider(type='xml')
        payload = self.codec.encode(xml_provider, routing_policy)

        self.assertEqual(xml, payload)
        routing_policy_decode = self.codec.decode(xml_provider, payload)
        self.assertEqual(routing_policy, routing_policy_decode)
    def setUpClass(self):
        self.codec = CodecService()
        self.provider = CodecServiceProvider(type=EncodingFormat.XML)

        self._enum_payload_1 = """<built-in-t xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <enum-value>local</enum-value>
</built-in-t>
"""

        self._enum_payload_2 = """<runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <ytypes>
    <built-in-t>
      <enum-value>local</enum-value>
    </built-in-t>
  </ytypes>
</runner>"""

        self._runner_payload = """<runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
Exemple #16
0
    def test_embedded_quote_leaflist_value(self):
        xml = '''<routing-policy xmlns="http://openconfig.net/yang/routing-policy">
  <defined-sets>
    <bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy">
      <community-sets>
        <community-set>
          <community-set-name>COMMUNITY-SET1</community-set-name>
          <config>
            <community-set-name>COMMUNITY-SET1</community-set-name>
            <community-member>ios-regex '^65172:17...$'</community-member>
            <community-member>65172:16001</community-member>
          </config>
          <state>
            <community-set-name>COMMUNITY-SET1</community-set-name>
            <community-member>ios-regex '^65172:17...$'</community-member>
            <community-member>65172:16001</community-member>
          </state>
        </community-set>
      </community-sets>
    </bgp-defined-sets>
  </defined-sets>
</routing-policy>
'''
        routing_policy = RoutingPolicy()

        com = RoutingPolicy.DefinedSets.BgpDefinedSets.CommunitySets.CommunitySet(
        )
        com.community_set_name = "COMMUNITY-SET1"
        com.config.community_set_name = "COMMUNITY-SET1"
        com.config.community_member.append("ios-regex '^65172:17...$'")
        com.config.community_member.append("65172:16001")

        com.state.community_set_name = "COMMUNITY-SET1"
        com.state.community_member.append("ios-regex '^65172:17...$'")
        com.state.community_member.append("65172:16001")

        routing_policy.defined_sets.bgp_defined_sets.community_sets.community_set.append(
            com)
        xml_provider = CodecServiceProvider(type='xml')
        payload = self.codec.encode(xml_provider, routing_policy)

        routing_policy_decode = self.codec.decode(xml_provider, payload)
        if routing_policy == routing_policy_decode:  # TODO failing on travis for --one-module-per-class option
            self.assertEqual(routing_policy, routing_policy_decode)
Exemple #17
0
def run_multiple_routing_bgp(netconf_service, session):
    crud = CRUDService()
    codec = CodecService()
    codec_provider = CodecServiceProvider()

    crud.delete(session, bgp())
    crud.delete(session, RoutingPolicy())

    multi_cfg = _get_bgp_routing_multiple_object()
    multi_payload_expected = codec.encode(codec_provider, multi_cfg)

    result = netconf_service.edit_config(session, Datastore.candidate, multi_cfg)
    assert 'ok' in result

    multi_filter = {'bgp':bgp(), 'routing-policy':RoutingPolicy()}
    multi_entity_read = netconf_service.get_config(session, Datastore.candidate, multi_filter)

    multi_payload_actual = codec.encode(codec_provider, multi_entity_read)

    assert multi_payload_expected == multi_payload_actual
    def setUpClass(self):
        from ydk.providers import CodecServiceProvider
        from ydk.services import CodecService
        self.codec = CodecService()
        self.provider = CodecServiceProvider(type='xml')

        self._enum_payload_1 = """<built-in-t xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <enum-value>local</enum-value>
</built-in-t>
"""

        self._enum_payload_2 = """<runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <ytypes>
    <built-in-t>
      <enum-value>local</enum-value>
    </built-in-t>
  </ytypes>
</runner>"""

        self._runner_payload = """<runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
Exemple #19
0
    def test_ylist_runner_no_key_list(self):
        runner = ysanity.Runner()
        t1 = ysanity.Runner().NoKeyList()
        t1.test = 't1'
        t2 = ysanity.Runner().NoKeyList()
        t2.test = 't2'
        t3 = ysanity.Runner().NoKeyList()
        t3.test = 't3'
        runner.no_key_list.extend([t1, t2, t3])

        count = ''
        for elem in runner.no_key_list:
            count += elem.test
        self.assertEqual(count, 't1t2t3')

        from ydk.providers import CodecServiceProvider
        from ydk.services  import CodecService
        provider = CodecServiceProvider(type='xml')
        codec = CodecService()

        payload = codec.encode(provider, runner)
        expected = '''<runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <no-key-list>
    <test>t1</test>
  </no-key-list>
  <no-key-list>
    <test>t2</test>
  </no-key-list>
  <no-key-list>
    <test>t3</test>
  </no-key-list>
</runner>
'''
        self.assertEqual(payload, expected)

        runner_decode = codec.decode(provider, payload)
        self.assertEqual(runner_decode, runner)
Exemple #20
0
    )
    comm_set.community_set_name = 'testing'
    comm_set.community_member.append("oooo")
    comm_set.community_member.append("a")
    routing_policy.defined_sets.bgp_defined_sets.community_sets.community_set.append(
        comm_set)

    routing_payload = codec_service.encode(provider, routing_policy)
    print routing_payload
    routing_entity = codec_service.decode(provider, routing_payload)
    print 'Encoded payload:\n', routing_payload, \
            '\nRe-encode the decoded payload:\n', codec_service.encode(provider, routing_entity)
    assert routing_payload == codec_service.encode(provider, routing_entity)


def init_logging():
    import logging
    log = logging.getLogger('ydk')
    log.setLevel(logging.DEBUG)
    ch = logging.StreamHandler()
    log.addHandler(ch)


if __name__ == "__main__":
    init_logging()
    provider = CodecServiceProvider(type='xml')
    codec_service = CodecService()
    bgp_run(codec_service, provider)
    run_routing(codec_service, provider)
    exit()
    parser = ArgumentParser()
    parser.add_argument("-v", "--verbose", help="print debugging messages",
                        action="store_true")
    args = parser.parse_args()

    # log debug messages if verbose argument specified
    if args.verbose:
        logger = logging.getLogger("ydk")
        logger.setLevel(logging.DEBUG)
        handler = logging.StreamHandler()
        formatter = logging.Formatter(("%(asctime)s - %(name)s - "
                                      "%(levelname)s - %(message)s"))
        handler.setFormatter(formatter)
        logger.addHandler(handler)

    # create codec provider
    provider = CodecServiceProvider(type="xml")

    # create codec service
    codec = CodecService()

    router_static = xr_ip_static_cfg.RouterStatic()  # create object
    config_router_static(router_static)  # add object configuration

    # encode and print object
    print(codec.encode(provider, router_static))

    provider.close()
    exit()
# End of script
Exemple #22
0
def serialize_model(model):
    provider = CodecServiceProvider(type="xml")
    codec = CodecService()
    return codec.encode(provider, model)
 def setUpClass(self):
     self.csp = CodecServiceProvider(type=EncodingFormat.XML)
     self.es = ExecutorService()
     self.cs = CodecService()
Exemple #24
0
from main import celery
from ydk.services import CodecService
from ydk.providers import CodecServiceProvider
from ydk.errors import YModelError, YCodecError, YCoreError, YError, YClientError
from main.models import NetConf, Devices
from requests import post
import json

json_provider = CodecServiceProvider(type='json')
codec = CodecService()


@celery.task(time_limit=15)
def net_conf(message):
    data = message.get('data')
    json_data = [json.dumps({k: v}) for k, v in data.items()]

    sid = message.get('sid')
    url = message.get('url')

    errors = []
    response = {}
    try:
        _codec = codec.decode(json_provider, json_data)
    except (RuntimeError, ValueError, IndexError, YModelError, YCodecError,
            YCoreError) as err:
        _codec = None
        errors.append(str(err))

    if _codec is not None:
        device_id = message.get('device_id')
Exemple #25
0
 def to_string(self):
     from ydk.providers import CodecServiceProvider
     from ydk.services import CodecService
     provider = CodecServiceProvider(type="xml")
     codec = CodecService()
     return codec.encode(provider, self.binding)
Exemple #26
0
    def setUpClass(self):
        self.maxDiff = None
        self.codec = CodecService()
        self.provider = CodecServiceProvider(type='xml')

        self._xml_enum_payload_1 = '''<built-in-t xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <enum-value>local</enum-value>
</built-in-t>
'''
        self._json_enum_payload_1 = """{
  "ydktest-sanity:built-in-t": {
    "enum-value": "local"
  }
}
"""

        self._xml_enum_payload_2 = '''<runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <ytypes>
    <built-in-t>
      <enum-value>local</enum-value>
    </built-in-t>
  </ytypes>
</runner>
'''

        self._xml_runner_payload = '''<runner xmlns="http://cisco.com/ns/yang/ydktest-sanity">
  <two-list>
    <ldata>
      <number>21</number>
      <name>runner:twolist:ldata[21]:name</name>
      <subl1>
        <number>211</number>
        <name>runner:twolist:ldata[21]:subl1[211]:name</name>
      </subl1>
      <subl1>
        <number>212</number>
        <name>runner:twolist:ldata[21]:subl1[212]:name</name>
      </subl1>
    </ldata>
    <ldata>
      <number>22</number>
      <name>runner:twolist:ldata[22]:name</name>
      <subl1>
        <number>221</number>
        <name>runner:twolist:ldata[22]:subl1[221]:name</name>
      </subl1>
      <subl1>
        <number>222</number>
        <name>runner:twolist:ldata[22]:subl1[222]:name</name>
      </subl1>
    </ldata>
  </two-list>
</runner>
'''

        self._json_runner_payload = """{
  "ydktest-sanity:runner": {
    "two-list": {
      "ldata": [
        {
          "number": 21,
          "name": "runner:twolist:ldata[21]:name",
          "subl1": [
            {
              "number": 211,
              "name": "runner:twolist:ldata[21]:subl1[211]:name"
            },
            {
              "number": 212,
              "name": "runner:twolist:ldata[21]:subl1[212]:name"
            }
          ]
        },
        {
          "number": 22,
          "name": "runner:twolist:ldata[22]:name",
          "subl1": [
            {
              "number": 221,
              "name": "runner:twolist:ldata[22]:subl1[221]:name"
            },
            {
              "number": 222,
              "name": "runner:twolist:ldata[22]:subl1[222]:name"
            }
          ]
        }
      ]
    }
  }
}
"""
        self._xml_oc_pattern_payload = '''<oc-A xmlns="http://cisco.com/ns/yang/oc-pattern">
  <a>Hello</a>
</oc-A>
'''
        self._json_oc_pattern_payload = """{
Exemple #27
0
import argparse
import json

import yaml
from ydk.providers import CodecServiceProvider
from ydk.services import CodecService

PARSER = argparse.ArgumentParser(description='convert yang json to xml')
PARSER.add_argument('-j', '--json_file', help='json_file')
PARSER.add_argument('-y', '--yaml_file', help='yaml_file')

ARGS = vars(PARSER.parse_args())

CODEC = CodecService()

JSON_PROVIDER = CodecServiceProvider(type='json')
XML_PROVIDER = CodecServiceProvider(type='xml')


def yang_yaml_to_xml(yaml_file):
    """
    Convert YAML to XML
    """
    with open(yaml_file, 'r') as yaml_in:
        yaml_object = yaml.safe_load(yaml_in)

    config_json_yang = json.dumps(yaml_object)
    decoded_json_yang = CODEC.decode(JSON_PROVIDER, config_json_yang)

    yang_xml = CODEC.encode(XML_PROVIDER, decoded_json_yang)
    return yang_xml
Exemple #28
0
def create_service(request, nc_provider):
    # create CRUD service
    crud = CRUDService()
    # create codec provider
    codec_provider = CodecServiceProvider(type="xml")
    # create codec service
    codec = CodecService()
    interface_name = request['interface-name']
    # create ifmgr obj
    if_cfg = xr_ifmgr_cfg.InterfaceConfigurations.InterfaceConfiguration()
    if_cfg.active = "act"
    if_cfg.interface_name = interface_name
    if_cfg.interface_mode_non_physical = xr_ifmgr_cfg.InterfaceModeEnum.l2_transport

    # creat ethernet service Encapsulation obj
    if_cfg.ethernet_service.encapsulation = if_cfg.ethernet_service.Encapsulation(
    )
    encap_type = xr_eth_infra_dt.Match.match_dot1q
    encap_value = xr_eth_infra_dt.Vlan = int(request['vlan-id'])
    if_cfg.ethernet_service.encapsulation.outer_tag_type = encap_type
    if_cfg.ethernet_service.encapsulation.outer_range1_low = encap_value

    if_cfg.ethernet_service.rewrite = xr_ifmgr_cfg.InterfaceConfigurations.InterfaceConfiguration.EthernetService.Rewrite(
    )
    rewrite_type = xr_eth_infra_dt.Rewrite.pop1
    if_cfg.ethernet_service.rewrite.rewrite_type = rewrite_type

    # create localtraffic obj
    local_traffic_def_encap = if_cfg.ethernet_service.LocalTrafficDefaultEncapsulation(
    )
    if_cfg.ethernet_service.local_traffic_default_encapsulation = local_traffic_def_encap
    if_cfg.ethernet_service.local_traffic_default_encapsulation = if_cfg.ethernet_service.encapsulation

    # create the interface configurations add the if_cfg to it
    if_cfgs = xr_ifmgr_cfg.InterfaceConfigurations()
    if_cfgs.interface_configuration.append(if_cfg)
    if request['delete-config'] == 'off':
        crud.create(nc_provider, if_cfgs)
    elif request['delete-config'] == 'on':
        crud.delete(nc_provider, if_cfg)

    # create the l2vpn object, database and pw classes
    # set enable as "Empty" type
    l2vpn_cfg = xr_l2vpn_cfg.L2vpn()
    l2vpn_cfg.enable = Empty()
    l2vpn_cfg.database = xr_l2vpn_cfg.L2vpn.Database()
    l2vpn_cfg.database.pseudowire_classes = l2vpn_cfg.Database.PseudowireClasses(
    )

    test_class = xr_l2vpn_cfg.L2vpn.Database.PseudowireClasses.PseudowireClass(
    )
    test_class.name = "ELINE-PW"
    test_class.enable = Empty()
    test_class.mpls_encapsulation = xr_l2vpn_cfg.L2vpn.Database.PseudowireClasses.PseudowireClass(
    ).MplsEncapsulation()
    test_class.mpls_encapsulation.enable = Empty()
    test_class.mpls_encapsulation.control_word = xr_l2vpn_cfg.ControlWord.enable
    flow_label = xr_l2vpn_cfg.FlowLabelLoadBalance()
    # flow_label = xr_l2vpn_cfg.L2vpn.Database.PseudowireClasses.PseudowireClass.MplsEncapsulation.LoadBalanceGroup.FlowLabelLoadBalance()
    test_class.mpls_encapsulation.load_balance_group = xr_l2vpn_cfg.L2vpn.Database.PseudowireClasses.PseudowireClass.MplsEncapsulation.LoadBalanceGroup(
    )
    test_class.mpls_encapsulation.load_balance_group.flow_label_load_balance.flow_label = flow_label.both
    l2vpn_cfg.database.pseudowire_classes.pseudowire_class.append(test_class)

    l2vpn_cfg.database.xconnect_groups = xr_l2vpn_cfg.L2vpn.Database.XconnectGroups(
    )
    test_group = xr_l2vpn_cfg.L2vpn.Database.XconnectGroups.XconnectGroup()
    test_group.name = "ELINE-SVCS"
    l2vpn_cfg.database.xconnect_groups.xconnect_group.append(test_group)

    test_group.p2p_xconnects = l2vpn_cfg.Database.XconnectGroups.XconnectGroup.P2pXconnects(
    )
    test_xconnect = xr_l2vpn_cfg.L2vpn.Database.XconnectGroups.XconnectGroup.P2pXconnects.P2pXconnect(
    )
    test_xconnect.name = request['vlan-id'] + "-" + request['pw-id']
    test_group.p2p_xconnects.p2p_xconnect.append(test_xconnect)

    test_xconnect.attachment_circuits = xr_l2vpn_cfg.L2vpn.Database.XconnectGroups.XconnectGroup.P2pXconnects.P2pXconnect.AttachmentCircuits(
    )
    test_ac = xr_l2vpn_cfg.L2vpn.Database.XconnectGroups.XconnectGroup.P2pXconnects.P2pXconnect.AttachmentCircuits.AttachmentCircuit(
    )
    test_ac.name = request['interface-name']
    test_ac.enable = Empty()
    test_xconnect.attachment_circuits.attachment_circuit.append(test_ac)

    test_xconnect.pseudowires = xr_l2vpn_cfg.L2vpn.Database.XconnectGroups.XconnectGroup.P2pXconnects.P2pXconnect.Pseudowires(
    )
    test_pw = xr_l2vpn_cfg.L2vpn.Database.XconnectGroups.XconnectGroup.P2pXconnects.P2pXconnect.Pseudowires.Pseudowire(
    )
    test_pw.pseudowire_id = int(request['pw-id'])
    test_neighbor = xr_l2vpn_cfg.L2vpn.Database.XconnectGroups.XconnectGroup.P2pXconnects.P2pXconnect.Pseudowires.Pseudowire.Neighbor(
    )
    test_neighbor.neighbor = request['neighbor-ip']
    test_neighbor.class_ = "ELINE-PW"
    test_pw.neighbor.append(test_neighbor)
    test_xconnect.pseudowires.pseudowire.append(test_pw)

    the_xml = codec.encode(codec_provider, l2vpn_cfg)
    if request['delete-config'] == 'off':
        crud.create(nc_provider, l2vpn_cfg)
    elif request['delete-config'] == 'on':
        xc_group = l2vpn_cfg.database.xconnect_groups.xconnect_group.get(
            "ELINE-SVCS")
        xc = xc_group.p2p_xconnects.p2p_xconnect[test_xconnect.name]
        xc.yfilter = YFilter.delete
        # xc.attachment_circuits.yfilter = YFilter.delete
        # xc.pseudowires.yfilter = YFilter.delete
        crud.update(nc_provider, xc_group)
    return
    parser = ArgumentParser()
    parser.add_argument("-v", "--verbose", help="print debugging messages",
                        action="store_true")
    args = parser.parse_args()

    # log debug messages if verbose argument specified
    if args.verbose:
        logger = logging.getLogger("ydk")
        logger.setLevel(logging.DEBUG)
        handler = logging.StreamHandler()
        formatter = logging.Formatter(("%(asctime)s - %(name)s - "
                                      "%(levelname)s - %(message)s"))
        handler.setFormatter(formatter)
        logger.addHandler(handler)

    # create codec provider
    provider = CodecServiceProvider(type="xml")

    # create codec service
    codec = CodecService()

    ntp = xr_ip_ntp_cfg.Ntp()  # create object
    config_ntp(ntp)  # add object configuration

    # encode and print object
    print(codec.encode(provider, ntp))

    provider.close()
    exit()
# End of script
Exemple #30
0
                        help="print debugging messages",
                        action="store_true")
    args = parser.parse_args()

    # log debug messages if verbose argument specified
    if args.verbose:
        logger = logging.getLogger("ydk")
        logger.setLevel(logging.INFO)
        handler = logging.StreamHandler()
        formatter = logging.Formatter(("%(asctime)s - %(name)s - "
                                       "%(levelname)s - %(message)s"))
        handler.setFormatter(formatter)
        logger.addHandler(handler)

    # create codec provider
    provider = CodecServiceProvider(type="xml")

    # create codec service
    codec = CodecService()

    ipv4_acl_and_prefix_list = xr_ipv4_acl_cfg.Ipv4AclAndPrefixList(
    )  # create object
    config_ipv4_acl_and_prefix_list(
        ipv4_acl_and_prefix_list)  # add object configuration

    # encode and print object
    print(codec.encode(provider, ipv4_acl_and_prefix_list))

    exit()
# End of script
Exemple #31
0
def create_l3_service(request, nc_provider):
    # create CRUD service
    crud = CRUDService()
    # create codec provider
    codec_provider = CodecServiceProvider(type="xml")
    # create codec service
    codec = CodecService()

    # interface configuration
    interface_name = request['interface-name']
    # create ifmgr obj
    if_cfg = xr_ifmgr_cfg.InterfaceConfigurations.InterfaceConfiguration()
    if_cfg.active = "act"
    if_cfg.interface_name = interface_name
    if_cfg.interface_mode_non_physical = xr_ifmgr_cfg.InterfaceModeEnum.default

    if_cfg.statistics = xr_ifmgr_cfg.InterfaceConfigurations.InterfaceConfiguration.Statistics(
    )
    if_cfg.statistics.load_interval = 30

    if_cfg.ipv4_network = xr_ifmgr_cfg.InterfaceConfigurations.InterfaceConfiguration.Ipv4Network(
    )
    if_cfg.ipv4_network.addresses = xr_ifmgr_cfg.InterfaceConfigurations.InterfaceConfiguration.Ipv4Network(
    ).Addresses()

    primary_address = xr_ifmgr_cfg.InterfaceConfigurations.InterfaceConfiguration.Ipv4Network(
    ).Addresses().Primary()
    primary_address.address = request['intf-ip']
    primary_address.netmask = "255.255.255.252"

    if_cfg.ipv4_network.addresses.primary = primary_address

    if_cfg.vlan_sub_configuration = xr_ifmgr_cfg.InterfaceConfigurations.InterfaceConfiguration(
    ).VlanSubConfiguration()
    if_cfg.vlan_sub_configuration.vlan_identifier = xr_ifmgr_cfg.InterfaceConfigurations.InterfaceConfiguration(
    ).VlanSubConfiguration().VlanIdentifier()
    if_cfg.vlan_sub_configuration.vlan_identifier.first_tag = int(
        request['vlan-id'])
    encap_type = xr_eth_infra_dt.Vlan.vlan_type_dot1q
    if_cfg.vlan_sub_configuration.vlan_identifier.vlan_type = encap_type

    the_xml = codec.encode(codec_provider, if_cfg)
    # logging.info(the_xml)
    # create the interface configurations add the if_cfg to it
    if_cfgs = xr_ifmgr_cfg.InterfaceConfigurations()
    if_cfgs.interface_configuration.append(if_cfg)

    if request['delete-config'] == 'off':
        crud.create(nc_provider, if_cfgs)
    elif request['delete-config'] == 'on':
        crud.delete(nc_provider, if_cfg)

    # global configuration
    bgp = xr_ipv4_bgp_cfg.Bgp()
    instance = bgp.Instance()
    instance.instance_name = "default"
    instance_as = instance.InstanceAs()
    instance_as.as_ = 0
    four_byte_as = instance_as.FourByteAs()
    four_byte_as.as_ = int(request['bgp-as'])
    four_byte_as.bgp_running = Empty()
    # global address family
    global_af = four_byte_as.default_vrf.global_.global_afs.GlobalAf()
    global_af.af_name = xr_ipv4_bgp_datatypes.BgpAddressFamily.ipv4_unicast
    global_af.enable = Empty()
    global_af.sourced_networks = four_byte_as.default_vrf.global_.global_afs.GlobalAf(
    ).SourcedNetworks()
    network = four_byte_as.default_vrf.global_.global_afs.GlobalAf(
    ).SourcedNetworks().SourcedNetwork()
    addr_parsed = request['intf-ip'].split('.')
    addr = addr_parsed[0] + "." + addr_parsed[1] + "." + addr_parsed[2] + ".0"
    network.network_addr = addr
    network.network_prefix = int(request['mask'])
    global_af.sourced_networks.sourced_network.append(network)

    four_byte_as.default_vrf.global_.global_afs.global_af.append(global_af)
    instance_as.four_byte_as.append(four_byte_as)
    instance.instance_as.append(instance_as)
    bgp.instance.append(instance)

    the_xml = codec.encode(codec_provider, bgp)
    logging.info(the_xml)

    if request['delete-config'] == 'off':
        crud.create(nc_provider, bgp)
    elif request['delete-config'] == 'on':
        bgp_instance = bgp.instance['default']
        sourced = bgp.instance['default'].instance_as['0'].four_byte_as[
            request['bgp-as']].default_vrf.global_.global_afs.global_af[
                'ipv4-unicast'].sourced_networks
        sn = sourced.sourced_network[addr, int(request['mask'])]
        sn.yfilter = YFilter.delete
        crud.update(nc_provider, bgp)

    return