I would like to have an integration to pull the data from an external source

keshav77
Tera Contributor

Hi All,

 

I am trying to create integration between application asset note And servicenow. I am trying to pull the data in discovered Item table but getting error 520 in that. below is my script include.

 

var AssetnoteAssetHandler = Class.create();

AssetnoteAssetHandler.DOMAIN_CLASS_NAME = "cmdb_ci_dns_name";
AssetnoteAssetHandler.IP_CLASS_NAME = "cmdb_ci_ip_address";
AssetnoteAssetHandler.DISCOVERY_SOURCE = gs.getProperty("assetnote.cmdb.discovery_source");
AssetnoteAssetHandler.PLACEHOLDER_CI = "Assetnote-IPAddresses";

AssetnoteAssetHandler.prototype = {
    initialize: function() {},

    processAssetResponse: function(response) {

        for (var i = 0; i < response.data.assets.edges.length; i++) {

            var host = response.data.assets.edges[i].node.host;
            var type = response.data.assets.edges[i].node.__typename;
            var id = response.data.assets.edges[i].node.id;
            var ipAddress = response.data.assets.edges[i].node.ipAddress;
            var humanName = response.data.assets.edges[i].node.humanName;

            /*if (type == "SubdomainAsset") {
                var payload = {
                    "items": [{
                        "className": AssetnoteAssetHandler.DOMAIN_CLASS_NAME,
                        "lookup": [],
                        "values": {
                            "correlation_id": id,
                            "ip_address": ipAddress,
                            "name": host
                        }
                    }],
                    "relations": []
                };
            } else {
                var payload = {
                    "items": [{
                            "className": AssetnoteAssetHandler.IP_CLASS_NAME,
                            "lookup": [],
                            "values": {
                                "correlation_id": id,
                                "ip_address": host,
                                "netmask": this.CIDR2Netmask(humanName.toString().split('/')[1])
                            }
                        },
                        {
                            "className": "cmdb_ci_server",
                            "lookup": [],
                            "values": {
                                "name": AssetnoteAssetHandler.PLACEHOLDER_CI
                            }
                        }
                    ],
                    "relations": [{
                        "type": "Owns::Owned by",
                        "parent": 1,
                        "child": 0
                    }]
                };
            }

            if (payload) {
                var input = JSON.stringify((payload));
                var output = sn_cmdb.IdentificationEngine.createOrUpdateCIEnhanced(AssetnoteAssetHandler.DISCOVERY_SOURCE, input, {});

                //gs.info(JSON.stringify(JSON.parse(output), null, 2));

                var jsonOutput = JSON.parse(output);
                var operation = jsonOutput.items[0].operation;
                if (operation == "INSERT" || operation == "UPDATE" || operation == "NO_CHANGE") {
                    //do nothing
                } else {
                    return output;
                }
            }*/

            var grint = new GlideRecord('sn_sec_int_impl');
            grint.addQuery('name', 'Assetnote');
            grint.query();

            var sourceSysId;

            if (!grint.next()) {
                var grin = new GlideRecord('sn_sec_int_impl');
                grin.initialize();
                grin.name = 'Assetnote';
                grin.integration = 'Assetnote';
                sourceSysId = grin.insert();
                gs.info('id'+ sourceSysId);

            } else {
                sourceSysId = grint.getUniqueValue();
                gs.info('id'+ sourceSysId);
            }
              gs.info('keshav94');
            var gtdt = new GlideRecord('sn_sec_cmn_src_ci');
            gtdt.addQuery('source_id', id);
            gtdt.query();
            if (!gtdt.next()) {
                var dt = new GlideRecord('sn_sec_cmn_src_ci');
                dt.initialize();
                dt.source_id = id;
                dt.source = sourceSysId;
                dt.u_hostname_from_scanner = host;
                dt.u_ipaddress_from_scanner = ipAddress;
                dt.insert();

                gs.info('[Assetnote] Inserted new sn_sec_cmn_src_ci record for source_id: ' + id);

            } else {

                gs.info('[Assetnote] sn_sec_cmn_src_ci record already exists for source_id: ' + id);

            }

        }

        return 'COMPLETED';

    },

    CIDR2Netmask: function(bitCount) {
        var mask = [];
        for (var i = 0; i < 4; i++) {
            var n = Math.min(bitCount, 8);
            mask.push(256 - Math.pow(2, 8 - n));
            bitCount -= n;
        }
        return mask.join('.');
    },

    type: 'AssetnoteAssetHandler'
};

 

 

0 REPLIES 0