Sign in to follow this  
Tanvir

Update resource's custom property with a csv file

Recommended Posts

Hi All

 

I have written a script which would take csv file with column and update the device custom property's value.

This script works like displayname=~  but If you provide full display name, please change the line 39 to queryParameters = '?fields=id&filter=displayName:'+devicename+'&size=300'

CSV file have to have heads and the first column is resource name, the second column is property name and the third column have to have  value.

 

 

#!/bin/ehave value

mport pandas as pd
import requests
import json
import hashlib
import base64
import time
import hmac
import csv

#Account Info
AccessId ='XXX'
AccessKey ='YYY'
Company = 'abc'

filename = raw_input("Enter a CSV name with extention: ")

# open the file to read number of rowa.
file = open(filename)
row = len(file.readlines())


df=pd.read_csv (filename)

for r in range (0, row-1):
    devicename=df.iloc[r,0]
    print(devicename)
        
        
    #Request Info
    httpVerb ='GET'
    resourcePath = '/device/devices'
    
    queryParameters = '?fields=id&filter=displayName~'+devicename+'&size=300'
    data = ''

    #Construct URL 
    url = 'https://'+ Company +'.logicmonitor.com/santaba/rest' + resourcePath + queryParameters

    #Get current time in milliseconds
    epoch = str(int(time.time() * 1000))

    #Concatenate Request details
    requestVars = httpVerb + epoch + data + resourcePath

    #Construct signature
    signature = base64.b64encode(hmac.new(AccessKey,msg=requestVars,digestmod=hashlib.sha256).hexdigest())

    #Construct headers
    auth = 'LMv1 ' + AccessId + ':' + signature + ':' + epoch
    headers = {'Content-Type':'application/json','Authorization':auth}

    #Make request
    response = requests.get(url, data=data, headers=headers)

    #Parse response
    jsonResponse = json.loads(response.content)
    #print 'Response Body:',jsonResponse

    for i in jsonResponse['data']['items']:
        #print  str(i['id'])
        deviceId = str(i['id'])
        j=len(deviceId)-3
        ##print ('j',j)
        for i in range (0, j):
                
                            
            #Request Info
    
            httpVerb ='PUT'
            proertyname=df.iloc[r,1]
            resourcePath = '/device/devices/'+deviceId+'/properties/'+proertyname
            queryParams =''
            propertyvalue= df.iloc[r,2]
            data = '{"value":"'+propertyvalue+'"}'
                
            #Construct URL 
            url = 'https://'+ Company +'.logicmonitor.com/santaba/rest' + resourcePath + queryParams

            #Get current time in milliseconds
            epoch = str(int(time.time() * 1000))

            #Concatenate Request details
            requestVars = httpVerb + epoch + data + resourcePath

            #Construct signature
            signature = base64.b64encode(hmac.new(AccessKey,msg=requestVars,digestmod=hashlib.sha256).hexdigest())

            #Construct headers
            auth = 'LMv1 ' + AccessId + ':' + signature + ':' + epoch
            headers = {'Content-Type':'application/json','Authorization':auth}

            #Make request
            response = requests.put(url, data=data, headers=headers)
            #print ('Response Status:',response.status_code)
            print ('Response Body:', str(response.content))

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this