def create(self, id, sdata):
        sdata.getSession().addYangSessionPreReserveProcessor(
            self.create_pre_processor)

        #Fetch Local Config Object
        config = getCurrentObjectConfig(id, sdata, 'transport_options')

        #Fetch Service Model Context Object
        smodelctx = None

        #Fetch Parent Object
        parentobj = None

        dev = []
        inputkeydict = {}
        devbindobjs = {}
        inputdict = {}
        opaque_args = self.opaque_args

        # START OF FETCHING THE LEAF PARAMETERS
        inputdict['name'] = config.get_field_value('name')
        inputdict['transport_option'] = config.get_field_value(
            'transport_option')
        inputdict['tcp_options'] = config.get_field_value('tcp_options')
        # END OF FETCHING THE LEAF PARAMETERS

        _Gen_obj = getLocalObject(sdata, 'day1service')
        device_mgmt_ip_address = _Gen_obj.day1service.device_ip

        #Fetch Device Object
        dev = getDeviceObject(device_mgmt_ip_address, sdata)

        # START OF FETCHING THE PARENT KEY LEAF PARAMETERS
        inputkeydict[
            'day1services_day1service_netflow_netflow_flow_records_flow_record_name'] = sdata.getRcPath(
            ).split('/')[-4].split('=')[1]
        inputkeydict['day1services_day1service_device_ip'] = sdata.getRcPath(
        ).split('/')[-8].split('=')[1]
        # END OF FETCHING THE PARENT KEY LEAF PARAMETERS

        dev_pro_name = inputdict['name']
        if util.isNotEmpty(inputdict['transport_option']):
            if util.isNotEmpty(inputdict['tcp_options']):
                dev_pro_name = "collect_transport_%s_%s" % (
                    inputdict['transport_option'], inputdict['tcp_options'])
            else:
                dev_pro_name = "collect_transport_%s" % (
                    inputdict['transport_option'])

        #Use the custom methods to process the data
        service_customization.ServiceDataCustomization.process_service_create_data(
            smodelctx,
            sdata,
            dev,
            id=id,
            device=dev,
            parentobj=parentobj,
            inputdict=inputdict,
            inputkeydict=inputkeydict,
            config=config,
            hopaque=opaque_args)

        #Start of Device binding with python bindings
        netflow_object = devices.device.netflow.netflow()
        netflow_flow_records_object = devices.device.netflow.flow_records.flow_records(
        )
        _Gen_obj = getLocalObject(sdata, 'flow-record')
        inputdict[
            'day1services_day1service_netflow_netflow_flow_records_flow_record_name'] = _Gen_obj.flow_record.name
        if util.isNotEmpty(
                inputdict.get(
                    'day1services_day1service_netflow_netflow_flow_records_flow_record_name'
                )):
            netflow_flow_records_flow_record_object = devices.device.netflow.flow_records.flow_record.flow_record(
            )
            netflow_flow_records_flow_record_collect_object = devices.device.netflow.flow_records.flow_record.collect.collect(
            )
            netflow_flow_records_flow_record_collect_transport_object = devices.device.netflow.flow_records.flow_record.collect.transport.transport(
            )
            if util.isNotEmpty(inputdict.get('name')):
                netflow_flow_records_flow_record_collect_transport_transport_options_object = devices.device.netflow.flow_records.flow_record.collect.transport.transport_options.transport_options(
                )
                netflow_flow_records_flow_record_collect_transport_transport_options_object.name = dev_pro_name
                netflow_flow_records_flow_record_collect_transport_transport_options_object.transport_option = inputdict.get(
                    'transport_option')
                netflow_flow_records_flow_record_collect_transport_transport_options_object.tcp_options = inputdict.get(
                    'tcp_options')

        #End of Device binding
        devbindobjs[
            'netflow_flow_records_flow_record_collect_transport_transport_options_object'] = netflow_flow_records_flow_record_collect_transport_transport_options_object
        #Use the custom method to process/create payload
        service_customization.ServiceDataCustomization.process_service_device_bindings(
            smodelctx,
            sdata,
            dev,
            id=id,
            device=dev,
            inputdict=inputdict,
            inputkeydict=inputkeydict,
            parentobj=parentobj,
            config=config,
            devbindobjs=devbindobjs,
            hopaque=opaque_args)
        for dev_iterator in dev:
            if not yang.Sdk.dataExists(
                    dev_iterator.url +
                    '/l3features:netflow/flow-records/flow-record=%s/collect' %
                (util.make_interfacename(
                    inputdict.get(
                        'day1services_day1service_netflow_netflow_flow_records_flow_record_name'
                    )))):
                yang.Sdk.createData(
                    dev_iterator.url +
                    '/l3features:netflow/flow-records/flow-record=%s' %
                    (util.make_interfacename(
                        inputdict.get(
                            'day1services_day1service_netflow_netflow_flow_records_flow_record_name'
                        ))), '<collect/>', sdata.getSession(), False)

            if not yang.Sdk.dataExists(
                    dev_iterator.url +
                    '/l3features:netflow/flow-records/flow-record=%s/collect/transport'
                    %
                (util.make_interfacename(
                    inputdict.get(
                        'day1services_day1service_netflow_netflow_flow_records_flow_record_name'
                    )))):
                yang.Sdk.createData(
                    dev_iterator.url +
                    '/l3features:netflow/flow-records/flow-record=%s/collect' %
                    (util.make_interfacename(
                        inputdict.get(
                            'day1services_day1service_netflow_netflow_flow_records_flow_record_name'
                        ))), '<transport/>', sdata.getSession(), False)

        netflow_flow_records_flow_record_collect_transport_transport_options_object_payload = netflow_flow_records_flow_record_collect_transport_transport_options_object.getxml(
            filter=True)
        log('netflow_flow_records_flow_record_collect_transport_transport_options_object_payload: %s'
            %
            (netflow_flow_records_flow_record_collect_transport_transport_options_object_payload
             ))
        for dev_iterator in dev:
            yang.Sdk.createData(
                dev_iterator.url +
                '/netflow/flow-records/flow-record=%s/collect/transport' %
                (util.make_interfacename(
                    inputdict.get(
                        'day1services_day1service_netflow_netflow_flow_records_flow_record_name'
                    ))),
                netflow_flow_records_flow_record_collect_transport_transport_options_object_payload,
                sdata.getSession(), True)
Esempio n. 2
0
    def create(self, id, sdata):
        sdata.getSession().addYangSessionPreReserveProcessor(
            self.create_pre_processor)

        #Fetch Local Config Object
        config = getCurrentObjectConfig(id, sdata, 'interface')

        #Fetch Service Model Context Object
        smodelctx = None

        #Fetch Parent Object
        parentobj = None

        dev = []
        inputkeydict = {}
        devbindobjs = {}
        inputdict = {}
        opaque_args = self.opaque_args

        # START OF FETCHING THE LEAF PARAMETERS
        inputdict['interface'] = config.get_field_value('interface')
        # END OF FETCHING THE LEAF PARAMETERS

        _Gen_obj = getLocalObject(sdata, 'day1service')
        device_mgmt_ip_address = _Gen_obj.day1service.device_ip

        #Fetch Device Object
        dev = getDeviceObject(device_mgmt_ip_address, sdata)

        # START OF FETCHING THE PARENT KEY LEAF PARAMETERS
        inputkeydict[
            'day1services_day1service_netflow_netflow_flow_monitors_flow_monitor_name'] = sdata.getRcPath(
            ).split('/')[-3].split('=')[1]
        inputkeydict['day1services_day1service_device_ip'] = sdata.getRcPath(
        ).split('/')[-7].split('=')[1]
        # END OF FETCHING THE PARENT KEY LEAF PARAMETERS

        #Use the custom methods to process the data
        service_customization.ServiceDataCustomization.process_service_create_data(
            smodelctx,
            sdata,
            dev,
            id=id,
            device=dev,
            parentobj=parentobj,
            inputdict=inputdict,
            inputkeydict=inputkeydict,
            config=config,
            hopaque=opaque_args)

        #Start of Device binding with python bindings
        #netflow_object = devices.device.netflow.netflow()
        netflow_object = netflow.netflow()
        #netflow_flow_monitors_object = devices.device.netflow.flow_monitors.flow_monitors()
        netflow_flow_monitors_object = netflow.flow_monitors.flow_monitors()
        _Gen_obj = getLocalObject(sdata, 'flow-monitor')
        inputdict[
            'day1services_day1service_netflow_netflow_flow_monitors_flow_monitor_name'] = _Gen_obj.flow_monitor.name
        if util.isNotEmpty(
                inputdict.get(
                    'day1services_day1service_netflow_netflow_flow_monitors_flow_monitor_name'
                )):
            #netflow_flow_monitors_flow_monitor_object = devices.device.netflow.flow_monitors.flow_monitor.flow_monitor()
            netflow_flow_monitors_flow_monitor_object = netflow.flow_monitors.flow_monitor.flow_monitor(
            )
            #netflow_flow_monitors_flow_monitor_interfaces_object = devices.device.netflow.flow_monitors.flow_monitor.interfaces.interfaces()
            netflow_flow_monitors_flow_monitor_interfaces_object = netflow.flow_monitors.flow_monitor.interfaces.interfaces(
            )
            if util.isNotEmpty(inputdict.get('interface')):
                #netflow_flow_monitors_flow_monitor_interfaces_interface_object = devices.device.netflow.flow_monitors.flow_monitor.interfaces.interface.interface()
                netflow_flow_monitors_flow_monitor_interfaces_interface_object = netflow.flow_monitors.flow_monitor.interfaces.interface.interface(
                )
                netflow_flow_monitors_flow_monitor_interfaces_interface_object.interface = inputdict.get(
                    'interface')

        #End of Device binding
        devbindobjs[
            'netflow_flow_monitors_flow_monitor_interfaces_interface_object'] = netflow_flow_monitors_flow_monitor_interfaces_interface_object
        #Use the custom method to process/create payload
        service_customization.ServiceDataCustomization.process_service_device_bindings(
            smodelctx,
            sdata,
            dev,
            id=id,
            device=dev,
            inputdict=inputdict,
            inputkeydict=inputkeydict,
            parentobj=parentobj,
            config=config,
            devbindobjs=devbindobjs,
            hopaque=opaque_args)
        for dev_iterator in dev:
            if not yang.Sdk.dataExists(
                    dev_iterator.url +
                    '/l3features:netflow/flow-monitors/flow-monitor=%s/interfaces'
                    %
                (util.make_interfacename(
                    inputdict.get(
                        'day1services_day1service_netflow_netflow_flow_monitors_flow_monitor_name'
                    )))):
                yang.Sdk.createData(
                    dev_iterator.url +
                    '/l3features:netflow/flow-monitors/flow-monitor=%s' %
                    (util.make_interfacename(
                        inputdict.get(
                            'day1services_day1service_netflow_netflow_flow_monitors_flow_monitor_name'
                        ))), '<interfaces/>', sdata.getSession(), False)

        netflow_flow_monitors_flow_monitor_interfaces_interface_object_payload = netflow_flow_monitors_flow_monitor_interfaces_interface_object.getxml(
            filter=True)
        #log('netflow_flow_monitors_flow_monitor_interfaces_interface_object_payload: %s' % (netflow_flow_monitors_flow_monitor_interfaces_interface_object_payload))
        for dev_iterator in dev:
            yang.Sdk.createData(
                dev_iterator.url +
                '/l3features:netflow/flow-monitors/flow-monitor=%s/interfaces'
                % (util.make_interfacename(
                    inputdict.get(
                        'day1services_day1service_netflow_netflow_flow_monitors_flow_monitor_name'
                    ))),
                netflow_flow_monitors_flow_monitor_interfaces_interface_object_payload,
                sdata.getSession(), True)
Esempio n. 3
0
    def create(self, id, sdata):
        sdata.getSession().addYangSessionPreReserveProcessor(self.create_pre_processor)

        #Fetch Local Config Object
        config = getCurrentObjectConfig(id, sdata, 'match_condition')

        #Fetch Service Model Context Object
        smodelctx = None

        #Fetch Parent Object
        parentobj = None

        dev = []
        inputkeydict = {}
        devbindobjs={}
        inputdict = {}
        opaque_args = self.opaque_args
 
        if config.get_field_value('cidr') == "true":
            prefix_in = config.get_field_value('cidr_value')
            prefix = util.IPPrefix(prefix_in)
            ip_address = prefix.address
            wildcard = prefix.wildcard
            source_ipv4_address = ip_address
            source_ipv4_mask = wildcard
        else:
            source_ipv4_address = config.get_field_value('source_ipv4_address')
            source_ipv4_mask = config.get_field_value('source_ipv4_address_mask')

        if config.get_field_value('cidr') == "true" and config.get_field_value('cidr_destination_value') !=None:
            prefix_in = config.get_field_value('cidr_destination_value')
            prefix = util.IPPrefix(prefix_in)
            ip_address = prefix.address
            wildcard = prefix.wildcard
            destination_ipv4_address = ip_address
            destination_ipv4_mask = wildcard
        else:
            destination_ipv4_address = config.get_field_value('destination_ipv4_address')
            destination_ipv4_mask = config.get_field_value('destination_ipv4_address_mask')

        # START OF FETCHING THE LEAF PARAMETERS
        inputdict['sequence_number'] = config.get_field_value('sequence_number')
        inputdict['match_condition_name'] = config.get_field_value('match_condition_name')
        inputdict['match_packets'] = config.get_field_value('match_packets')
        inputdict['source_condition_type'] = config.get_field_value('source_condition_type')
        inputdict['source_ipv4_address'] = source_ipv4_address
        inputdict['source_ipv4_address_mask'] = source_ipv4_mask
        '''
        if config.get_field_value('dest_condition_type') is None:
          if inputdict['source_condition_type'] == 'host':
            inputdict['dest_condition_type'] = 'host'
          if inputdict['source_condition_type'] == 'cidr':
            inputdict['dest_condition_type'] = 'cidr'
          if inputdict['source_condition_type'] == 'any':
            inputdict['dest_condition_type'] = None
        else:
          inputdict['dest_condition_type'] = config.get_field_value('dest_condition_type')
        inputdict['cidr_destination_value'] = config.get_field_value('cidr_destination_value')
        inputdict['destination_ipv4_address'] = destination_ipv4_address
        inputdict['destination_ipv4_address_mask'] = destination_ipv4_mask
        '''
        inputdict['action'] = config.get_field_value('action')


        acl_name = inputdict['action']

        if inputdict['source_condition_type'] == 'host':
          acl_name = acl_name + ' ' + 'host' + ' '+ inputdict['source_ipv4_address']
        
        if inputdict['source_condition_type'] == "cidr":
          acl_name = acl_name + ' ' + inputdict['source_ipv4_address'] + ' ' + inputdict['source_ipv4_address_mask']

        if inputdict['source_condition_type'] == "any":
	      acl_name = acl_name + ' ' + 'any'

        #if inputdict['dest_condition_type'] == "host" and inputdict['destination_ipv4_address'] != None:
          #acl_name = acl_name + ' ' + 'host' + ' ' + inputdict['destination_ipv4_address']

        #if inputdict['destination_ipv4_address'] != None and inputdict['destination_ipv4_address_mask'] !=None:
          #acl_name = acl_name + ' ' + inputdict['destination_ipv4_address'] + ' ' + inputdict['destination_ipv4_address_mask']

        if inputdict['match_packets']!= None:
	       acl_name = acl_name + ' ' + inputdict['match_packets']
    
        # END OF FETCHING THE LEAF PARAMETERS

        _Gen_obj = getLocalObject(sdata, 'day1service')
        device_mgmt_ip_address = _Gen_obj.day1service.device_ip

        #Fetch Device Object
        dev = getDeviceObject(device_mgmt_ip_address, sdata)

        # START OF FETCHING THE PARENT KEY LEAF PARAMETERS
        inputkeydict['day1services_day1service_named_access_lists_acl_acl_name'] = sdata.getRcPath().split('/')[-2].split('=')[1]
        inputkeydict['day1services_day1service_device_ip'] = sdata.getRcPath().split('/')[-4].split('=')[1]
        # END OF FETCHING THE PARENT KEY LEAF PARAMETERS

        #Use the custom methods to process the data
        service_customization.ServiceDataCustomization.process_service_create_data(smodelctx, sdata, dev, id=id, device=dev, parentobj=parentobj, inputdict=inputdict, inputkeydict=inputkeydict, config=config, hopaque=opaque_args)

        #Start of Device binding with python bindings
        #access_lists_object = devices.device.access_lists.access_lists()
        _Gen_obj = getLocalObject(sdata, 'acl')
        inputdict['day1services_day1service_named_access_lists_acl_acl_name'] = _Gen_obj.acl.acl_name
        if util.isNotEmpty(inputdict.get('day1services_day1service_named_access_lists_acl_acl_name')):
          #access_lists_access_list_object = devices.device.access_lists.access_list.access_list()
          #access_lists_access_list_acl_rules_object = devices.device.access_lists.access_list.acl_rules.acl_rules()
          if util.isNotEmpty(inputdict.get('match_condition_name')):
            #access_lists_access_list_acl_rules_acl_rule_object = devices.device.access_lists.access_list.acl_rules.acl_rule.acl_rule()
            access_lists_access_list_acl_rules_acl_rule_object = access_lists.access_list.acl_rules.acl_rule.acl_rule()
            #access_lists_access_list_acl_rules_acl_rule_object.name = inputdict.get('match_condition_name')

            access_lists_access_list_acl_rules_acl_rule_object.name = acl_name
            access_lists_access_list_acl_rules_acl_rule_object.linenumber = inputdict.get('sequence_number')
            access_lists_access_list_acl_rules_acl_rule_object.action = inputdict.get('action')
            access_lists_access_list_acl_rules_acl_rule_object.source_condition_type = inputdict.get('source_condition_type')
            access_lists_access_list_acl_rules_acl_rule_object.source_ip = inputdict.get('source_ipv4_address')
            access_lists_access_list_acl_rules_acl_rule_object.source_mask = inputdict.get('source_ipv4_address_mask')
            #access_lists_access_list_acl_rules_acl_rule_object.dest_condition_type = inputdict.get('dest_condition_type')
            #access_lists_access_list_acl_rules_acl_rule_object.dest_ip = inputdict.get('destination_ipv4_address')
            #access_lists_access_list_acl_rules_acl_rule_object.dest_mask = inputdict.get('destination_ipv4_address_mask')
            if inputdict.get('match_packets') != "log":
                access_lists_access_list_acl_rules_acl_rule_object.match_packets = inputdict.get('match_packets')
            else:
                access_lists_access_list_acl_rules_acl_rule_object.extra_options = "log"




        #End of Device binding
        devbindobjs['access_lists_access_list_acl_rules_acl_rule_object'] = access_lists_access_list_acl_rules_acl_rule_object
        #Use the custom method to process/create payload
        service_customization.ServiceDataCustomization.process_service_device_bindings(smodelctx, sdata, dev, id=id, device=dev, inputdict=inputdict, inputkeydict=inputkeydict, parentobj=parentobj, config=config, devbindobjs=devbindobjs, hopaque=opaque_args)
        #for dev_iterator in dev:
          #yang.Sdk.createData(dev_iterator.url+'/access-lists/access-list=%s'%(util.make_interfacename(inputdict.get('day1services_day1service_named_access_lists_acl_acl_name'))),'<acl-rules/>', sdata.getSession(), True)


        access_lists_access_list_acl_rules_acl_rule_object_payload = access_lists_access_list_acl_rules_acl_rule_object.getxml(filter=True)
        #log('access_lists_access_list_acl_rules_acl_rule_object_payload: %s' % (access_lists_access_list_acl_rules_acl_rule_object_payload))
        for dev_iterator in dev:
          yang.Sdk.createData(dev_iterator.url+'/acl:access-lists/access-list=%s/acl-rules'%(util.make_interfacename(inputdict.get('day1services_day1service_named_access_lists_acl_acl_name'))),access_lists_access_list_acl_rules_acl_rule_object_payload, sdata.getSession(), True)
Esempio n. 4
0
    def create(self, id, sdata):
        sdata.getSession().addYangSessionPreReserveProcessor(
            self.create_pre_processor)

        #Fetch Local Config Object
        config = getCurrentObjectConfig(id, sdata, 'options')

        #Fetch Service Model Context Object
        smodelctx = None

        #Fetch Parent Object
        parentobj = None
        rcpath = util.get_parent_rcpath(sdata.getRcPath(), level=1)
        xml_output = yang.Sdk.getData(rcpath, '', sdata.getTaskId())
        parentobj = util.parseXmlString(xml_output)

        dev = []
        inputkeydict = {}
        devbindobjs = {}
        inputdict = {}
        opaque_args = self.opaque_args

        # START OF FETCHING THE LEAF PARAMETERS
        inputdict['option'] = config.get_field_value('option')
        # END OF FETCHING THE LEAF PARAMETERS

        _Gen_obj = getLocalObject(sdata, 'day1service')
        device_mgmt_ip_address = _Gen_obj.day1service.device_ip

        if hasattr(parentobj.flow_export, 'name'):
            inputdict[
                'netflow_flow_exports_flow_export_name'] = parentobj.flow_export.name
        #Fetch Device Object
        dev = getDeviceObject(device_mgmt_ip_address, sdata)

        # START OF FETCHING THE PARENT KEY LEAF PARAMETERS
        inputkeydict[
            'day1services_day1service_netflow_netflow_flow_exports_flow_export_name'] = sdata.getRcPath(
            ).split('/')[-2].split('=')[1]
        inputkeydict['day1services_day1service_device_ip'] = sdata.getRcPath(
        ).split('/')[-6].split('=')[1]
        # END OF FETCHING THE PARENT KEY LEAF PARAMETERS

        #Use the custom methods to process the data
        service_customization.ServiceDataCustomization.process_service_create_data(
            smodelctx,
            sdata,
            dev,
            id=id,
            device=dev,
            parentobj=parentobj,
            inputdict=inputdict,
            inputkeydict=inputkeydict,
            config=config,
            hopaque=opaque_args)

        #Start of Device binding with python bindings
        #netflow_object = devices.device.netflow.netflow()
        netflow_object = netflow.netflow()
        #netflow_flow_exports_object = devices.device.netflow.flow_exports.flow_exports()
        netflow_flow_exports_object = netflow.flow_exports.flow_exports()
        if util.isNotEmpty(
                inputdict.get('netflow_flow_exports_flow_export_name')):
            #netflow_flow_exports_flow_export_object = devices.device.netflow.flow_exports.flow_export.flow_export()
            netflow_flow_exports_flow_export_object = netflow.flow_exports.flow_export.flow_export(
            )
            if util.isNotEmpty(inputdict.get('option')):
                #netflow_flow_exports_flow_export_options_object = devices.device.netflow.flow_exports.flow_export.options.options()
                netflow_flow_exports_flow_export_options_object = netflow.flow_exports.flow_export.options.options(
                )
                netflow_flow_exports_flow_export_options_object.option = inputdict.get(
                    'option')

        #End of Device binding
        devbindobjs[
            'netflow_flow_exports_flow_export_options_object'] = netflow_flow_exports_flow_export_options_object
        #Use the custom method to process/create payload
        service_customization.ServiceDataCustomization.process_service_device_bindings(
            smodelctx,
            sdata,
            dev,
            id=id,
            device=dev,
            inputdict=inputdict,
            inputkeydict=inputkeydict,
            parentobj=parentobj,
            config=config,
            devbindobjs=devbindobjs,
            hopaque=opaque_args)

        netflow_flow_exports_flow_export_options_object_payload = netflow_flow_exports_flow_export_options_object.getxml(
            filter=True)
        log('netflow_flow_exports_flow_export_options_object_payload: %s' %
            (netflow_flow_exports_flow_export_options_object_payload))
        for dev_iterator in dev:
            yang.Sdk.createData(
                dev_iterator.url +
                '/l3features:netflow/flow-exports/flow-export=%s' %
                (util.make_interfacename(
                    inputdict.get('netflow_flow_exports_flow_export_name'))),
                netflow_flow_exports_flow_export_options_object_payload,
                sdata.getSession(), True)