-- C:\Program Files (x86)\Nimsoft\probes\service\nas\scripts>..\..\..\..\sdk\nsa\nsa.exe garin\DistributePackage\DistributePackage_controller function TimeStamp(stuff) print (string.format("%s %s", timestamp.format(timestamp.now(), "%X"), stuff)) end function tdump(t) local function dmp(t, l, k) if type(t) == "table" then print(string.format("%s%s:", string.rep(" ", l*2), tostring(k))) for k, v in pairs(t) do dmp(v, l+1, k) end else print(string.format("%s%s:%s", string.rep(" ", l*2), tostring(k), tostring(t))) end end dmp(t, 1, "root") end local key, value, RobotParts local sql, rc, err local d, l local DistPackage = "robot_update" local DistVersion = "7.62" local DistBuild = "1330" local gethubs = nimbus.request("hub","gethubs") if gethubs == nil then nimbus.login("administrator","XXXXXXXXXXX") end --rc, err = database.open( "Provider=SQLOLEDB;Initial Catalog=NimsoftSLM;Data Source=10.244.120.3;User ID=ca-nimsoft;Password=XXXXXXXXXX;Network Library=dbmssocn;Language=us_english",false) rc, err = database.open("provider=nis;database=nis;driver=none") if rc ~= NIME_OK then TimeStamp("*** database open error (", rc, "): ", err) else TimeStamp("Database login successful.") end sql = [[ SELECT r.robot_id, p.name, r.robot, r.address, r.origin, r.hub, r.user_tag_1 FROM cm_nimbus_robot r left join CM_NIMBUS_PACKAGE p on r.robot_id=p.robot_id and p.name=']] .. DistPackage .. [[' where r.robot like '%[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9]%' and r.is_hub=1 ]] TimeStamp( sql ) d,rc,err = database.query(sql) database.close() if (rc ~= 0 and rc ~= nil) then TimeStamp("*** Query error (" .. rc .. "): " .. (err or "nil")) end --tdump(d) --print (nil .. nil ) for key, value in pairs(d) do TimeStamp (value.robot) if ( string.match(value.robot, ".*[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9].*") ~= nil ) then -- if ( string.match(value.robot, ".*LAB[0-9][0-9][0-9][0-9][0-9][0-9].*") ~= nil ) then toList = pds.create() pds.putString(toList,"package",DistPackage) l = 5 repeat l = l - 1 a,b = nimbus.request(value.address .. "/controller", "inst_list",toList) if ( b ~= NIME_OK ) then TimeStamp (" retrying list from controller") end until ( b == NIME_OK or l == 0 ) --tdump(a) --print (nil.. nil) if b == NIME_OK then TimeStamp (" list successful") -- print (nil .. nil ) if ( a[DistPackage] == nil or a[DistPackage].version ~= DistVersion or (a[DistPackage].version == DistVersion and a[DistPackage].build < DistBuild ) ) then -- print (nil .. nil ) toInstall = pds.create() pds.putString(toInstall,"job_id","DeployPackage") pds.putString(toInstall,"package",DistPackage) pds.putString(toInstall,"robot", value.address) pds.putInt(toInstall,"update",0) pds.putInt(toInstall,"start_at",0) a,b = nimbus.request("/MergeHC-dom/MergePrimary01-hub/centralhub01/distsrv", "job_add",toInstall) if b == NIME_OK then TimeStamp (" deployment successful") else TimeStamp (" deployment UNSUCCESSFUL!") end pds.delete(toInstall) else TimeStamp (" package already installed.") end else TimeStamp (" list UNSUCCESSFUL!") end pds.delete(toList) --print (nil .. nil ) end end