un-cli 0.0.67 → 0.0.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.mjs CHANGED
@@ -4,10 +4,10 @@ import { Portal } from "./portal.mjs"
4
4
  import { UtilityNetwork } from "./utilitynetwork.node.mjs"
5
5
  import { AdminLog } from "./adminlog.mjs"
6
6
 
7
- import { logger } from "./logger.mjs"
7
+ import logger from "./logger.mjs"
8
8
  import fetch from "node-fetch"
9
9
  //update version
10
- let version = "0.0.67";
10
+ let version = "0.0.70";
11
11
  const GENERATE_TOKEN_TIME_MIN = 30;
12
12
 
13
13
  let rl = null;
@@ -387,15 +387,14 @@ const inputs = {
387
387
 
388
388
  "^update subnetworks --deleted$" : async () => {
389
389
  console.log("Querying all subnetworks that are dirty and deleted.");
390
- let subnetworks = await un.queryDistinct(500002, "domainnetworkname,tiername,subnetworkname", "isdirty=1 and isdeleted=1");
390
+ let subnetworks = await un.queryDistinct(500002, "domainnetworkname,tiername,subnetworkname", "isdirty=1 and isdeleted=1","domainnetworkname,tiername,subnetworkname");
391
391
  console.log(`Discovered ${subnetworks.features.length} dirty deleted subnetworks.`);
392
392
  for (let i = 0; i < subnetworks.features.length; i++) {
393
393
  const f = subnetworks.features[i]
394
394
  console.log("Updating Subnetwork " + v(f.attributes,"subnetworkName"));
395
395
 
396
396
  const fromDate = new Date();
397
-
398
-
397
+
399
398
  const subnetworkResult = await un.updateSubnetworks(v(f.attributes,"domainNetworkName"), v(f.attributes,"tierName"), v(f.attributes,"subnetworkName"),false);
400
399
 
401
400
  //code
@@ -409,31 +408,39 @@ const inputs = {
409
408
  }
410
409
  },
411
410
 
412
- "^update subnetworks --all$" : async () => {
413
- console.log("Querying all subnetworks that are dirty.");
414
- let subnetworks = await un.queryDistinct(500002, "domainnetworkname,tiername,subnetworkname", "isdirty=1");
415
- console.log(`Discovered ${subnetworks.features.length} dirty subnetworks.`);
411
+ "^update subnetworks --all" : async input => {
412
+
413
+ do {
416
414
 
415
+ let sort = "asc";
416
+ if (input.indexOf("--desc") > 0) sort = "desc"
417
417
 
418
- for (let i = 0; i < subnetworks.features.length; i++) {
419
- const f = subnetworks.features[i]
420
- console.log("Updating Subnetwork " + v(f.attributes,"subnetworkName"));
421
-
422
- const fromDate = new Date();
423
-
418
+ console.log("Querying all subnetworks that are dirty.");
419
+ let subnetworks = await un.queryDistinct(500002, "domainnetworkname,tiername,subnetworkname", "isdirty=1", `domainnetworkname ${sort},tiername ${sort},subnetworkname ${sort}`);
420
+ console.log(`Discovered ${subnetworks.features.length} dirty subnetworks.`);
424
421
 
425
- const subnetworkResult = await un.updateSubnetworks(v(f.attributes,"domainNetworkName"), v(f.attributes,"tierName"), v(f.attributes,"subnetworkName"),false);
426
-
427
- const toDate = new Date();
428
- const timeEnable = toDate.getTime() - fromDate.getTime();
429
- subnetworkResult.duration = numberWithCommas(Math.round(timeEnable)) + " ms"
422
+ for (let i = 0; i < subnetworks.features.length; i++) {
423
+ const f = subnetworks.features[i]
424
+ console.log("Updating Subnetwork " + v(f.attributes,"subnetworkName"));
425
+
426
+ const fromDate = new Date();
427
+
428
+ const subnetworkResult = await un.updateSubnetworks(v(f.attributes,"domainNetworkName"), v(f.attributes,"tierName"), v(f.attributes,"subnetworkName"),false);
429
+
430
+ const toDate = new Date();
431
+ const timeEnable = toDate.getTime() - fromDate.getTime();
432
+ subnetworkResult.duration = numberWithCommas(Math.round(timeEnable)) + " ms"
433
+
434
+ console.log(`Result ${JSON.stringify(subnetworkResult)}`)
435
+ }
430
436
 
431
- console.log(`Result ${JSON.stringify(subnetworkResult)}`)
432
- }
437
+ }
438
+ while (subnetworks.features.length > 0)
439
+
433
440
  },
434
441
  "^update subnetworks --all --async$" : async () => {
435
442
  console.log("Querying all subnetworks that are dirty.");
436
- let subnetworks = await un.queryDistinct(500002, "domainnetworkname,tiername,subnetworkname", "isdirty=1");
443
+ let subnetworks = await un.queryDistinct(500002, "domainnetworkname,tiername,subnetworkname", "isdirty=1", "domainnetworkname,tiername,subnetworkname");
437
444
  console.log(`Discovered ${subnetworks.features.length} dirty subnetworks.`);
438
445
  for (let i = 0; i < subnetworks.features.length; i++) {
439
446
  const f = subnetworks.features[i]
@@ -443,8 +450,7 @@ const inputs = {
443
450
  }
444
451
  },
445
452
  "^export subnetworks --all --folder .*$|^export subnetworks --all$" : async input => {
446
-
447
-
453
+
448
454
  //create folder
449
455
  const file = input.match(/--folder .*/gm)
450
456
  let inputDir = "Exported"
@@ -452,40 +458,49 @@ const inputs = {
452
458
  inputDir = file[0].replace("--folder ", "")
453
459
  //create directory if doesn't exists
454
460
  if (!fs.existsSync(inputDir)) fs.mkdirSync(inputDir)
455
-
456
-
457
- console.log("Querying all subnetworks that are clean.");
458
- let subnetworks = await un.queryDistinct(500002, "domainnetworkname,tiername,subnetworkname", "isdirty=0");
459
- console.log(`Discovered ${subnetworks.features.length} subnetworks that can be exported.`);
460
- for (let i = 0; i < subnetworks.features.length; i++) {
461
- const f = subnetworks.features[i]
462
- const subnetworkName = v(f.attributes,"subnetworkName")
463
- console.log("Exporting subnetworks " + v(f.attributes,"subnetworkName"));
464
-
465
- const fromDate = new Date();
466
-
467
- const subnetworkResult = await un.exportSubnetworks(v(f.attributes,"domainNetworkName"), v(f.attributes,"tierName"), v(f.attributes,"subnetworkName"),false);
468
-
469
-
470
- //code
471
-
472
- const toDate = new Date();
473
- const timeEnable = toDate.getTime() - fromDate.getTime();
474
- subnetworkResult.duration = numberWithCommas(timeEnable) + " ms"
475
-
476
-
477
- //fetch the json and write it to disk
478
- const subContent = await fetch(subnetworkResult.url);
479
- //check if the response is 200 only then attempt to parse to json
480
- //although the response is json, its easier to treat it as text (handle error cases) since we will only write it to disk.
481
- // if we want to do something with the response then make it json
482
- const jsonExport = await subContent.text();
483
- fs.writeFileSync(`${inputDir}/${subnetworkName}.json`, jsonExport)
484
-
485
-
486
- console.log(`Result ${JSON.stringify(subnetworkResult)} written to file ${process.cwd()}/${inputDir}/${subnetworkName}.json`)
487
-
461
+
462
+ do {
463
+
464
+ console.log("Querying all subnetworks that are clean.");
465
+ let subnetworks = await un.queryDistinct(500002, "domainnetworkname,tiername,subnetworkname", "isdirty=0","domainnetworkname,tiername,subnetworkname");
466
+ console.log(`Discovered ${subnetworks.features.length} subnetworks that can be exported.`);
467
+ for (let i = 0; i < subnetworks.features.length; i++) {
468
+ const f = subnetworks.features[i]
469
+ const subnetworkName = v(f.attributes,"subnetworkName")
470
+ console.log("Exporting subnetworks " + v(f.attributes,"subnetworkName"));
471
+
472
+ const fromDate = new Date();
473
+
474
+ const subnetworkResult = await un.exportSubnetworks(v(f.attributes,"domainNetworkName"), v(f.attributes,"tierName"), v(f.attributes,"subnetworkName"),false);
475
+
476
+
477
+ //code
478
+
479
+ const toDate = new Date();
480
+ const timeEnable = toDate.getTime() - fromDate.getTime();
481
+ subnetworkResult.duration = numberWithCommas(timeEnable) + " ms"
482
+ //if undefined exit
483
+ if (!subnetworkResult.url)
484
+ {
485
+ console.log("Export subnetwork failed " + JSON.stringify(subnetworkResult))
486
+ continue;
487
+ }
488
+
489
+ //fetch the json and write it to disk
490
+ const subContent = await fetch(subnetworkResult.url);
491
+ //check if the response is 200 only then attempt to parse to json
492
+ //although the response is json, its easier to treat it as text (handle error cases) since we will only write it to disk.
493
+ // if we want to do something with the response then make it json
494
+ const jsonExport = await subContent.text();
495
+ fs.writeFileSync(`${inputDir}/${subnetworkName}.json`, jsonExport)
496
+
497
+
498
+ console.log(`Result ${JSON.stringify(subnetworkResult)} written to file ${process.cwd()}/${inputDir}/${subnetworkName}.json`)
499
+
500
+ }
488
501
  }
502
+ while (subnetworks.features.length > 0)
503
+
489
504
  },
490
505
 
491
506
 
@@ -501,7 +516,7 @@ const inputs = {
501
516
 
502
517
 
503
518
  console.log("Querying all subnetworks that are clean and not exported.");
504
- let subnetworks = await un.queryDistinct(500002, "domainnetworkname,tiername,subnetworkname", "isdirty = 0 and (LASTACKEXPORTSUBNETWORK is null or LASTACKEXPORTSUBNETWORK < LASTUPDATESUBNETWORK)");
519
+ let subnetworks = await un.queryDistinct(500002, "domainnetworkname,tiername,subnetworkname", "isdirty = 0 and (LASTACKEXPORTSUBNETWORK is null or LASTACKEXPORTSUBNETWORK < LASTUPDATESUBNETWORK)","domainnetworkname,tiername,subnetworkname");
505
520
  console.log(`Discovered ${subnetworks.features.length} subnetworks that can be exported.`);
506
521
  for (let i = 0; i < subnetworks.features.length; i++) {
507
522
  const f = subnetworks.features[i]
@@ -579,6 +594,14 @@ const inputs = {
579
594
  const subnetworkName = v(f.attributes,"subnetworkName")
580
595
  console.log(`Exporting subnetwork ${subnetworkName}` );
581
596
  const subnetworkResult = await un.exportSubnetworks(v(f.attributes,"domainNetworkName"), v(f.attributes,"tierName"), v(f.attributes,"subnetworkName"),false);
597
+
598
+ //if undefined exit
599
+ if (!subnetworkResult.url)
600
+ {
601
+ console.log("Export subnetwork failed " + JSON.stringify(subnetworkResult))
602
+ continue;
603
+ }
604
+
582
605
  //fetch the json and write it to disk
583
606
  const subContent = await fetch(subnetworkResult.url);
584
607
  const jsonExport = await subContent.text();
@@ -755,16 +778,30 @@ const inputs = {
755
778
 
756
779
  allMessages = allMessages.concat(jsonRes.logMessages.filter(m => m.message.indexOf("------ Trace Parameters ----") > -1))
757
780
  }
758
- allMessages.forEach(m => {
781
+
782
+ allMessages = allMessages.map(m => {
759
783
  const newMessage = Object.assign({}, m);
760
- delete newMessage.message
761
784
  delete newMessage.source;
762
785
  delete newMessage.machine;
763
786
  delete newMessage.type;
787
+ delete newMessage.code;
764
788
  delete newMessage.requestID;
789
+ delete newMessage.process;
765
790
  delete newMessage.thread;
766
- delete newMessage.time;
791
+ newMessage.elapsedms = parseInt (parseFloat(newMessage.elapsed) * 1000)
792
+ newMessage.time = new Date(newMessage.time).toLocaleString()
793
+ delete newMessage.elapsed
794
+ return newMessage;
795
+ })
796
+ .sort( (m1,m2) => m2.elapsedms - m1.elapsedms)
797
+
798
+ const summaryMessages = allMessages.map(m => {const newM = Object.assign({}, m); delete newM.message; return newM})
799
+ console.table(summaryMessages)
767
800
 
801
+ allMessages.forEach(m => {
802
+ const newMessage = Object.assign({}, m);
803
+ delete newMessage.message
804
+
768
805
  console.table([newMessage])
769
806
  console.log(m.message)
770
807
  })
@@ -783,37 +820,76 @@ const inputs = {
783
820
  if (inputParam != null && inputParam.length > 0)
784
821
  mins = inputParam[0].replace("--age ", "")
785
822
 
786
- console.log(`Querying validate logs for ${parameters.service} for the last ${mins} minutes ...`)
787
- const startTime = Date.now() - mins*60*1000
788
- const endTime = Date.now();
789
- let result= await adminLog.query([102003], [parameters.service+ ".MapServer"], topLogCount, startTime ,endTime , "VERBOSE")
790
- let jsonRes = await result.json()
791
- let allMessages = [].concat(jsonRes.logMessages)
792
- allMessages = allMessages.filter(m => m.message.indexOf("-------- Environment ---") > -1 && m.message.indexOf("------ Trace Parameters ----") < 0)
793
- while (jsonRes.hasMore)
794
- {
795
- //start paging
796
- logger.info(`Aggregating messages... total so far ${allMessages.length} entries but more left, pulling logs before ${new Date(jsonRes.endTime)}`)
797
- result= await adminLog.query([102003], [parameters.service + ".MapServer"], pageSize, jsonRes.endTime, null, "VERBOSE")
798
- jsonRes = await result.json()
799
-
800
- allMessages = allMessages.concat(jsonRes.logMessages.filter(m => m.message.indexOf("-------- Environment ---") > -1 && m.message.indexOf("------ Trace Parameters ----") == -1))
801
- }
823
+
824
+ console.log(`Querying validate logs for ${parameters.service} for the last ${mins} minutes ...`)
825
+ const startTime = Date.now() - mins*60*1000
826
+ const endTime = Date.now();
827
+ let result= await adminLog.query([102003], [parameters.service+ ".MapServer"], topLogCount, startTime ,endTime , "VERBOSE")
828
+ let jsonRes = await result.json()
829
+ let allMessages = [].concat(jsonRes.logMessages)
830
+ allMessages = allMessages.filter(m => m.message.indexOf("-------- Environment ---") > -1 && m.message.indexOf("The network is built.") > -1 && m.methodName == 'BuildEngineLog')
831
+ while (jsonRes.hasMore)
832
+ {
833
+ //start paging
834
+ logger.info(`Aggregating messages... total so far ${allMessages.length} entries but more left, pulling logs before ${new Date(jsonRes.endTime)}`)
835
+ let services = [parameters.service + ".MapServer"]
836
+ result= await adminLog.query([102003], services, pageSize, jsonRes.endTime, null, "VERBOSE")
837
+ jsonRes = await result.json()
838
+
839
+ allMessages = allMessages.concat(jsonRes.logMessages.filter(m => m.message.indexOf("-------- Environment ---") > -1 && m.message.indexOf("------ Trace Parameters ----") == -1))
840
+ }
841
+
842
+
843
+
844
+
845
+ //validate logs missing elapsed populate it
846
+ allMessages = allMessages.map( m => {
847
+ try{
848
+
849
+ //The network is built. 0.093 seconds (4.982 total) - 29 MB memory
850
+
851
+ let re = /The network is built. [-+]?([0-9]*\.[0-9]+|[0-9]+) seconds \([-+]?([0-9]*\.[0-9]+|[0-9]+) total\)/;
852
+ let res = re.exec(m.message)
853
+ if (res && res.length > 1)
854
+ m.elapsed = res[2]
855
+
856
+ return m;
857
+ }
858
+ catch(ex){
859
+ return m;
860
+ }
861
+ })
802
862
 
803
863
 
804
- allMessages.forEach(m => {
864
+
865
+ allMessages = allMessages.map(m => {
805
866
  const newMessage = Object.assign({}, m);
806
- delete newMessage.message
807
867
  delete newMessage.source;
808
868
  delete newMessage.machine;
809
869
  delete newMessage.type;
870
+ delete newMessage.code;
810
871
  delete newMessage.requestID;
872
+ delete newMessage.process;
811
873
  delete newMessage.thread;
812
- delete newMessage.time;
874
+ newMessage.elapsedms = parseInt (parseFloat(newMessage.elapsed) * 1000)
875
+ newMessage.time = new Date(newMessage.time).toLocaleString()
876
+ delete newMessage.elapsed
877
+ return newMessage;
878
+ })
879
+ .sort( (m1,m2) => m2.elapsedms - m1.elapsedms)
813
880
 
881
+ const summaryMessages = allMessages.map(m => {const newM = Object.assign({}, m); delete newM.message; return newM})
882
+ console.table(summaryMessages)
883
+
884
+ allMessages.forEach(m => {
885
+ const newMessage = Object.assign({}, m);
886
+ delete newMessage.message
887
+
814
888
  console.table([newMessage])
815
889
  console.log(m.message)
816
890
  })
891
+
892
+
817
893
 
818
894
  },
819
895
 
@@ -845,20 +921,59 @@ const inputs = {
845
921
 
846
922
  allMessages = allMessages.concat(jsonRes.logMessages.filter(m => m.message.indexOf("---- Subnetwork Parameters ----") > -1))
847
923
  }
848
- allMessages.forEach(m => {
924
+
925
+
926
+
927
+ //update subnetwork missing elapsed populate it
928
+ allMessages = allMessages.map( m => {
929
+ try{
930
+
931
+ let re = /Total \([-+]?([0-9]*\.[0-9]+|[0-9]+) seconds\)/;
932
+ let res = re.exec(m.message)
933
+ if (res && res.length > 1)
934
+ m.elapsed = res[1]
935
+
936
+ re = /Total update subnetwork time \([-+]?([0-9]*\.[0-9]+|[0-9]+) seconds\)/;
937
+ res = re.exec(m.message)
938
+ if (res && res.length > 1)
939
+ m.elapsed = res[1]
940
+
941
+ return m;
942
+ }
943
+ catch(ex){
944
+ return m;
945
+ }
946
+ })
947
+
948
+
949
+ allMessages = allMessages.map(m => {
849
950
  const newMessage = Object.assign({}, m);
850
- delete newMessage.message
851
951
  delete newMessage.source;
852
952
  delete newMessage.machine;
853
953
  delete newMessage.type;
954
+ delete newMessage.code;
854
955
  delete newMessage.requestID;
956
+ delete newMessage.process;
855
957
  delete newMessage.thread;
856
- delete newMessage.time;
958
+ newMessage.elapsedms = parseInt (parseFloat(newMessage.elapsed) * 1000)
959
+ newMessage.time = new Date(newMessage.time).toLocaleString()
960
+ delete newMessage.elapsed
961
+ return newMessage;
962
+ })
963
+ .sort( (m1,m2) => m2.elapsedms - m1.elapsedms)
857
964
 
965
+ const summaryMessages = allMessages.map(m => {const newM = Object.assign({}, m); delete newM.message; return newM})
966
+ console.table(summaryMessages)
967
+
968
+ allMessages.forEach(m => {
969
+ const newMessage = Object.assign({}, m);
970
+ delete newMessage.message
971
+
858
972
  console.table([newMessage])
859
973
  console.log(m.message)
860
974
  })
861
975
 
976
+
862
977
  },
863
978
 
864
979
 
@@ -893,12 +1008,12 @@ const inputs = {
893
1008
  allMessages = allMessages
894
1009
  .map( m=> {
895
1010
  m.dataAccessElapsed = parseFloat(m.message.split(";")[1].split(" ")[1])
896
- m.ExecuteQueryElapsed = parseFloat(m.message.split(";")[2].split(" ")[1])
897
- m.totalTimeElapsed = m.dataAccessElapsed + m.ExecuteQueryElapsed
1011
+ m.executeQueryElapsed = parseFloat(m.message.split(";")[2].split(" ")[1])
1012
+ m.totalExecutionElapsed = m.dataAccessElapsed + m.executeQueryElapsed
898
1013
  m.elapsed = parseFloat(m.elapsed); return m;
899
1014
 
900
1015
  })
901
- .sort( (m1,m2) => m2.totalTimeElapsed - m1.totalTimeElapsed)
1016
+ .sort( (m1,m2) => m2.totalExecutionElapsed - m1.totalExecutionElapsed)
902
1017
  .slice(0, 10) ;//first 10
903
1018
 
904
1019
 
@@ -908,11 +1023,12 @@ const inputs = {
908
1023
  {
909
1024
 
910
1025
  const x = m.message.split(";")
1026
+ x.shift()
911
1027
  console.log(`id: ${i++}`)
912
1028
  console.log(`\tAt: ${new Date(m.time)} (${m.time})`)
913
1029
  console.log(`\tUser: ${m.user}`)
914
- console.log(`\tElapsed: ${m.elapsed*1000} ms`)
915
- console.log(`\ttotalTimeElapsed: ${m.totalTimeElapsed} ms`)
1030
+ console.log(`\tTotal Time: ${numberWithCommas(Math.round(m.elapsed*1000))} ms (Total time the cursor was opened)`)
1031
+ console.log(`\tQuery Time: ${numberWithCommas(m.totalExecutionElapsed)} ms (includes search + data access nextRow)`)
916
1032
  console.log(`\tQuery:`)
917
1033
  x.forEach(a => console.log(`\t${a}`))
918
1034
  console.log(`\n`)
@@ -922,60 +1038,6 @@ const inputs = {
922
1038
  },
923
1039
 
924
1040
 
925
-
926
- "^cursorlogs --age": async input => {
927
- const topLogCount = 1000;
928
- const pageSize = 10000
929
-
930
- const inputParam = input.match(/--age .*/gm)
931
- let mins = 30; //query logs for the last 30 minutes
932
- if (inputParam != null && inputParam.length > 0)
933
- mins = inputParam[0].replace("--age ", "")
934
-
935
- console.log(`Querying cursor sql logs for ${parameters.service} for the last ${mins} minutes ...`)
936
- const startTime = Date.now() - mins*60*1000
937
- const endTime = Date.now();
938
- let result= await adminLog.query([102023], [parameters.service+ ".MapServer"], topLogCount, startTime ,endTime , "DEBUG")
939
- let jsonRes = await result.json()
940
- let allMessages = [].concat(jsonRes.logMessages)
941
- allMessages = allMessages.filter(m => m.message.indexOf("EndCursor;") > -1)
942
- while (jsonRes.hasMore)
943
- {
944
- //start paging
945
- logger.info(`Aggregating messages... total so far ${allMessages.length} entries but more left, pulling logs before ${new Date(jsonRes.endTime)}`)
946
- result= await adminLog.query([102023], [parameters.service + ".MapServer"], pageSize, jsonRes.endTime, null, "DEBUG")
947
- jsonRes = await result.json()
948
-
949
- allMessages = allMessages.concat(jsonRes.logMessages.filter(m => m.message.indexOf("EndCursor;") > -1))
950
- }
951
-
952
-
953
- //
954
- allMessages= allMessages.map(m => {
955
-
956
- const r= m.message.split (";")
957
- delete r[0];
958
- delete r[1];
959
- delete r[3];
960
- return r;
961
-
962
- const newMessage = Object.assign({}, m);
963
-
964
- delete newMessage.source;
965
- delete newMessage.machine;
966
- delete newMessage.type;
967
- delete newMessage.requestID;
968
- delete newMessage.methodName;
969
- delete newMessage.process;
970
- delete newMessage.thread;
971
- delete newMessage.time;
972
- delete newMessage.code;
973
-
974
- return newMessage
975
-
976
- })
977
- console.table(allMessages)
978
- },
979
1041
 
980
1042
 
981
1043
  "^arlogs --byrule": async input => {
@@ -990,17 +1052,29 @@ const inputs = {
990
1052
  if (inputParam != null && inputParam.length > 0 && inputParam[0].indexOf("--minguid") > -1)
991
1053
  showMinGuid = true
992
1054
 
1055
+
1056
+ const ageInputParam = input.match(/--age [0-9]*/)
1057
+ let mins = 30; //query logs for the last 30 minutes
1058
+ if (ageInputParam != null && ageInputParam.length > 0)
1059
+ mins = ageInputParam[0].replace("--age ", "")
1060
+
1061
+
1062
+ const startTime = Date.now() - mins*60*1000
1063
+ const endTime = Date.now();
1064
+
993
1065
  const pageSize = 10000 //maximum messages per page
994
- logger.info(`Querying attribute rules logs for ${parameters.service} ...`)
995
- let result= await adminLog.query([102003], [parameters.service + ".MapServer"], pageSize)
1066
+ logger.info(`Querying attribute rules logs for ${parameters.service} in the past ${mins} minutes...`)
1067
+ let result= await adminLog.query([102003], [parameters.service + ".MapServer"], pageSize, startTime ,endTime , "DEBUG")
996
1068
  let jsonRes = await result.json()
997
1069
  let allMessages = [].concat(jsonRes.logMessages)
998
1070
 
999
- while (jsonRes.hasMore)
1071
+ while (jsonRes.hasMore && jsonRes.endTime > startTime)
1000
1072
  {
1001
1073
  //start paging
1002
1074
  logger.info(`Aggregating messages... total so far ${allMessages.length} debug entries but more left, pulling logs before ${new Date(jsonRes.endTime)}`)
1003
- result= await adminLog.query([102003], [parameters.service + ".MapServer"], pageSize, jsonRes.endTime)
1075
+
1076
+
1077
+ result= await adminLog.query([102003], [parameters.service + ".MapServer"], pageSize, jsonRes.endTime )
1004
1078
  jsonRes = await result.json()
1005
1079
  allMessages = allMessages.concat(jsonRes.logMessages)
1006
1080
  }
package/logger.mjs CHANGED
@@ -1,3 +1,10 @@
1
+ const logger = {}
2
+ logger.info = console.log
3
+ logger.error = console.error
4
+
5
+ export default logger;
6
+
7
+ /*
1
8
  import winston from "winston"
2
9
 
3
10
  export const logger = winston.createLogger();
@@ -5,4 +12,4 @@ export const logger = winston.createLogger();
5
12
  logger.add(
6
13
  new winston.transports.Console({"format": winston.format.json()})
7
14
  );
8
-
15
+ */
package/makerequest.mjs CHANGED
@@ -1,4 +1,5 @@
1
- import fetch from "node-fetch";
1
+
2
+
2
3
 
3
4
  export function makeRequest (opts) {
4
5
 
@@ -24,7 +25,18 @@ export function makeRequest (opts) {
24
25
  Object.keys(opts.headers).forEach( key => headers[key] = opts.headers[key] )
25
26
 
26
27
  //console.log(opts)
27
- const result = await fetch(opts.url, {
28
+
29
+ let f;
30
+ try {
31
+ const nodeFetch = await import ("node-fetch");
32
+ f = nodeFetch.default;
33
+ }
34
+ catch(ex) {
35
+ f = fetch;
36
+ }
37
+
38
+
39
+ const result = await f(opts.url, {
28
40
  "method" : opts.method,
29
41
  "headers": headers,
30
42
  "body": params
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "un-cli",
3
- "version": "0.0.67",
3
+ "version": "0.0.70",
4
4
  "description": "Command line interface for working with ArcGIS Utility Network Extension",
5
5
  "main": "index.mjs",
6
6
  "bin": {
@@ -17,8 +17,6 @@
17
17
  "author": "Hussein Nasser",
18
18
  "license": "ISC",
19
19
  "dependencies": {
20
- "node-fetch": "^2.6.0",
21
- "progress": "^2.0.3",
22
- "winston": "^3.2.1"
20
+ "node-fetch": "^2.6.0"
23
21
  }
24
22
  }
package/portal.mjs CHANGED
@@ -1,15 +1,16 @@
1
1
  import { makeRequest } from "./makerequest.mjs"
2
- import { logger } from "./logger.mjs"
2
+ import logger from "./logger.mjs"
3
3
 
4
4
  export class Portal{
5
5
 
6
- constructor(url, username, password, expiration = 300, serverUrl = undefined)
6
+ constructor(url, username, password, expiration = 300, serverUrl = undefined, referer)
7
7
  {
8
8
  this.url = url;
9
9
  this.username = username;
10
10
  this.password = password;
11
11
  this.expiration = expiration;
12
12
  this.serverUrl = serverUrl;
13
+ this.referer = referer
13
14
  }
14
15
 
15
16
 
@@ -25,7 +26,7 @@ export class Portal{
25
26
  const postJson = {
26
27
  username: self.username,
27
28
  password: self.password,
28
- referer: "node",
29
+ referer: self.referer,
29
30
  expiration: self.expiration,
30
31
  f: "json"
31
32
  }
@@ -71,7 +72,7 @@ export class Portal{
71
72
  token: self.token
72
73
  }
73
74
 
74
- const serversUrl = self.url + "/sharing/rest/portals/self/servers"
75
+ const serversUrl = self.url + `/sharing/rest/portals/self/servers?token=${self.token}`
75
76
  logger.info( "About to query federated servers");
76
77
 
77
78
  //query for federated servers.