broken
Harald Wolff 2019-04-16 18:23:05 +02:00
parent e492e6c7e4
commit b617a7539e
9 changed files with 57 additions and 15 deletions

View File

@ -16,6 +16,7 @@ using ln.types.threads;
using ln.types.net;
using ln.types.odb;
using ln.types.odb.index;
using ln.types.odb.values;
namespace ln.skyscanner
{

View File

@ -18,6 +18,7 @@ using ln.types.net;
using ln.skyscanner.crawl;
using ln.skyscanner.checks;
using ln.logging;
using System.Collections.Generic;
namespace ln.skyscanner
{
@ -52,11 +53,11 @@ namespace ln.skyscanner
NodeCollection = ODB.GetCollection<Node>();
NodeCollection.EnableStrongCache(true);
NodeCollection.EnsureIndex("uniqueIdentity", true);
NodeCollection.EnsureIndeces(
"PrimaryIP",
"Interfaces[].ConfiguredIPs[].IP",
"Interfaces[].ConfiguredIPs[].Network",
"uniqueIdentity"
"Interfaces[].ConfiguredIPs[].Network"
);
Network4 n192 = Network4.Parse("192.168.0.0/16");
@ -83,6 +84,7 @@ namespace ln.skyscanner
SkyCheckStates = ODB.GetCollection<SkyCheckState>();
SkyCheckStates.EnableStrongCache(true);
SkyCheckStates.EnsureIndeces("Node");
SkyCheckStates.EnsureUniqueness("Node", "CheckName");
//foreach (SkyCheckState checkState in SkyCheckStates.ToArray())
//{
@ -95,6 +97,30 @@ namespace ln.skyscanner
GlobalNetwork = new GlobalNetwork();
}
public PerformanceValue LookupPerformanceValue(String perfName)
{
string[] resourcePath = perfName.Split('/');
Node node = NodeCollection.Query("uniqueIdentity", resourcePath[0]).FirstOrDefault();
if (node == null)
throw new KeyNotFoundException();
SkyCheckState skyCheckState = SkyCheckStates.Query(
Query.AND(
Query.Equals<SkyCheckState>("Node", node.ID),
Query.Equals<SkyCheckState>("CheckName", resourcePath[1])
)
).FirstOrDefault();
if (skyCheckState == null)
throw new KeyNotFoundException();
foreach (PerformanceValue performanceValue in skyCheckState.PerformanceValues)
if (performanceValue.PerfName.Equals(perfName))
return performanceValue;
throw new KeyNotFoundException();
}
}
}

View File

@ -20,11 +20,6 @@ namespace ln.skyscanner.checks
public override void Check(SkyChecker skyChecker,ref SkyCheckState checkState,Node node)
{
if ((checkState == null))
{
checkState = new SkyCheckState(this, node);
}
foreach (URI snmpUri in node.FindURIs("snmp"))
{
using (SnmpInterface snmp = SnmpInterface.FromURI(snmpUri,skyChecker.SNMPEngine))

View File

@ -28,13 +28,22 @@ namespace ln.skyscanner.checks
{
Name = String.Format("Interval check: {0} [{1}]",node.UniqueIdentity,node.PrimaryIP.ToString());
Node = node;
}
public override void Prepare()
{
Query stateQuery = Query.Equals<SkyCheckState>("Node", Node.ID);
SkyCheckState[] skyCheckStates = SkyScanner.Instance.Entities.SkyCheckStates.Query(stateQuery).ToArray();
foreach (SkyCheckState checkState in skyCheckStates)
{
checkStates.Add(checkState.CheckName, checkState);
}
foreach (SkyCheck check in SkyCheck.SkyChecks)
if (!checkStates.ContainsKey(check.Name) && check.IsValid(Node))
{
checkStates.Add(check.Name, check.PrepareCheckState(SkyScanner.Instance.Checker, Node));
SkyScanner.Instance.Entities.SkyCheckStates.Insert(checkStates[check.Name]);
}
}
public override void RunJob()

View File

@ -31,9 +31,6 @@ namespace ln.skyscanner.checks
public override void Check(SkyChecker skyChecker,ref SkyCheckState checkState,Node node)
{
if (checkState == null)
checkState = new SkyCheckState(this, node);
long roundTripTime = 0;
int success = 0;
int n;

View File

@ -9,6 +9,7 @@
// **/
using System;
using ln.perfdb.storage;
using Newtonsoft.Json;
namespace ln.skyscanner.checks
{
public class PerformanceValue
@ -23,7 +24,6 @@ namespace ln.skyscanner.checks
public double CritLower { get; set; } = Double.MinValue;
public double CritUpper { get; set; } = Double.MaxValue;
private PerformanceValue()
{
}

View File

@ -33,6 +33,10 @@ namespace ln.skyscanner.checks
public abstract bool IsValid(Node node);
public abstract void Check(SkyChecker skyChecker,ref SkyCheckState checkState,Node node);
public virtual SkyCheckState PrepareCheckState(SkyChecker skyChecker,Node node)
{
return new SkyCheckState(this, node);
}
static SkyCheck()
{

View File

@ -18,10 +18,6 @@ namespace ln.skyscanner.checks
public override void Check(SkyChecker skyChecker,ref SkyCheckState checkState,Node node)
{
if ((checkState == null) || !(checkState is UbiquityCheckState))
{
checkState = new UbiquityCheckState(this, node);
}
UbiquityCheckState ubiquityCheckState = checkState as UbiquityCheckState;
foreach (URI snmpUri in node.FindURIs("snmp"))
@ -63,6 +59,11 @@ namespace ln.skyscanner.checks
{
return (node.Vendor != null) && node.Vendor.Equals("Ubiquity");
}
public override SkyCheckState PrepareCheckState(SkyChecker skyChecker, Node node)
{
return new UbiquityCheckState(this, node);
}
}
class UbiquityCheckState : SkyCheckState

View File

@ -6,6 +6,9 @@ using ln.skyscanner.entities;
using ln.skyscanner.checks;
using ln.skyscanner.crawl;
using ln.types.net;
using System.Linq;
using System.Collections.Generic;
using ln.types.odb;
namespace ln.skyscanner.http
{
public class SkyScannerHttpApplication : ResourceApplication
@ -48,6 +51,12 @@ namespace ln.skyscanner.http
new CollectionResource<SkyCheckState>(collections, skyScanner.Entities.SkyCheckStates);
new CollectionResource<Network4>(collections, skyScanner.Entities.BlockedNetworks);
ObjectContainerResource<PerformanceValue> resPerformanceValues = new ObjectContainerResource<PerformanceValue>(collections);
resPerformanceValues.GetResourceName = (pv) => pv.PerfName;
resPerformanceValues.Enumeration = () => skyScanner.Entities.SkyCheckStates.SelectMany((checkState) => checkState.PerformanceValues);
resPerformanceValues.Lookup = skyScanner.Entities.LookupPerformanceValue;
}
private Resource ResourceTypeHook(DirectoryResource directoryResource, FileInfo fileInfo)