text:
Zig build fails due to undeclared identifiers

Hello,
I'm experimenting with Agar and Zig lang.
For some reason I cannot compile.
It seems something undefined in AG_TAILQ_LAST, AG_TAILQ_PREV and AGOBJECT_LAST_CHILD.

System: MacOS: 12.7.4
Arch: Intel x64
Agar: 1.7.1
Zig 0.11

These are some errors I got:
error: use of undeclared identifier 'struct_headname'
pub inline fn AG_TAILQ_LAST(head: anytype, headname: anytype) @TypeOf(@import("std").zig.c_translation.cast([*c]struct_headname, head.*.tqh_last).*.tqh_last.*) {

error: use of undeclared identifier 'struct_headname'
pub inline fn AG_TAILQ_PREV(elm: anytype, headname: anytype, field: anytype) @TypeOf(@import("std").zig.c_translation.cast([*c]struct_headname, elm.*.field.tqe_prev).*.tqh_last.*) {

error: use of undeclared identifier 'struct_t'
pub inline fn AGOBJECT_LAST_CHILD(@"var": anytype, t: anytype) [*c]struct_t {

To replicate these are the files I am using:
Makefile
PKG_CONFIG_PATH=pc/
PKG_LIBAGAR=${PKG_CONFIG_PATH}libagar.pc
AGAR_VERSION=`agar-config --version`
AGAR_CFLAGS=`agar-config --cflags`
AGAR_LIBS=`agar-config --libs`

build b:
	@make config
	PKG_CONFIG_PATH=${PKG_CONFIG_PATH} zig build

config c:
	@mkdir -p ${PKG_CONFIG_PATH}
	@echo "Name: libagar" > ${PKG_LIBAGAR}
	@echo "Description: LibAgar is a cross-platform GUI system. It provides a base framework and a standard toolkit of widgets from which high-performance, portable graphical applications can be built." >> ${PKG_LIBAGAR}
	@echo "Version: ${AGAR_VERSION}\n" >> ${PKG_LIBAGAR}
	@echo "Requires:" >> ${PKG_LIBAGAR}
	@echo "Libs: ${AGAR_LIBS}" >> ${PKG_LIBAGAR}
	@echo "Cflags: ${AGAR_CFLAGS}" >> ${PKG_LIBAGAR}
	@echo ${PKG_LIBAGAR}

build.zig
const std = @import("std");

// Although this function looks imperative, note that its job is to
// declaratively construct a build graph that will be executed by an external
// runner.
pub fn build(b: *std.Build) void {
    // Standard target options allows the person running `zig build` to choose
    // what target to build for. Here we do not override the defaults, which
    // means any target is allowed, and the default is native. Other options
    // for restricting supported target set are available.
    const target = b.standardTargetOptions(.{});

    // Standard optimization options allow the person running `zig build` to select
    // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. Here we do not
    // set a preferred release mode, allowing the user to decide how to optimize.
    const optimize = b.standardOptimizeOption(.{});

    const exe = b.addExecutable(.{
        .name = "agar-zig",
        // In this case the main source file is merely a path, however, in more
        // complicated build scripts, this could be a generated file.
        .root_source_file = .{ .path = "src/main.zig" },
        .target = target,
        .optimize = optimize,
    });

    exe.linkLibC();

    // Add our custom libagar pkg-config libs and cflags to the zig build
    exe.linkSystemLibrary2("libagar", .{ .use_pkg_config = .force });

    // This declares intent for the executable to be installed into the
    // standard location when the user invokes the "install" step (the default
    // step when running `zig build`).
    b.installArtifact(exe);

    // This *creates* a Run step in the build graph, to be executed when another
    // step is evaluated that depends on it. The next line below will establish
    // such a dependency.
    const run_cmd = b.addRunArtifact(exe);

    // By making the run step depend on the install step, it will be run from the
    // installation directory rather than directly from within the cache directory.
    // This is not necessary, however, if the application depends on other installed
    // files, this ensures they will be present and in the expected location.
    run_cmd.step.dependOn(b.getInstallStep());

    // This allows the user to pass arguments to the application in the build
    // command itself, like this: `zig build run -- arg1 arg2 etc`
    if (b.args) |args| {
        run_cmd.addArgs(args);
    }

    // This creates a build step. It will be visible in the `zig build --help` menu,
    // and can be selected like this: `zig build run`
    // This will evaluate the `run` step rather than the default, which is "install".
    const run_step = b.step("run", "Run the app");
    run_step.dependOn(&run_cmd.step);

    // Creates a step for unit testing. This only builds the test executable
    // but does not run it.
    const unit_tests = b.addTest(.{
        .root_source_file = .{ .path = "src/main.zig" },
        .target = target,
        .optimize = optimize,
    });

    const run_unit_tests = b.addRunArtifact(unit_tests);

    // Similar to creating the run step earlier, this exposes a `test` step to
    // the `zig build --help` menu, providing a way for the user to request
    // running the unit tests.
    const test_step = b.step("test", "Run unit tests");
    test_step.dependOn(&run_unit_tests.step);
}

src/main.zig
const std = @import("std");

const c = @cImport({
    @cInclude("stdio.h");
});

const agar = @cImport({
    @cInclude("agar/core.h");
    @cInclude("agar/gui.h");
});

pub fn main() !void {
    if (agar.AG_InitCore(c.NULL, 0) == -1) {
        c.fprintf(c.stderr, "Agar Core Init failed: %s\n", agar.AG_GetError());
        return 1;
    }

    if (agar.AG_InitGraphics(0) == -1) {
        c.fprintf(c.stderr, "Agar Graphics Init failed: %s\n", agar.AG_GetError());
        return 1;
    }

    const win = agar.AG_WindowNew(0);
    agar.AG_LabelNew(win, 0, "Hello, world!");
    agar.AG_WindowShow(win);
    agar.AG_EventLoop();

    return 0;
}

How to replicate

Create the files and then execute make build.

So I asked in Zig discord about this, and this was the response.

From: tomck5836 https://discord.com/channels/605571803288698900/1036403458305163384/1229840153279725618
Normally this kind of error occurs when you're trying to import a c header which contains complex stuff like macros, or static/inline functions which zig cannot properly translate to zig
Does libagar intentionally provide zig support? If not, they can't do anything to help + you're best off deleting the issue. This is not a problem with libagar (unless they explicitly say they support zig)
your options are:

use something else
write your own bindings

The @cImport stuff is just a shortcut that zig has to automatically try and import c headers. You can just write your own bindings with export fn (...), getting all the function signatures to match up.

So I guess for properly using libagar with zig I have to create zig bindings 💯

repo: JulNadeauCA/libagar


text:
JuliaCon 2017 | Interfacing with LLVM Using LLVM.jl | Tim Besard

Tim Besard Interfacing with LLVM Using LLVM.jl
Contents
00:00 Opening
00:20 What is LLVM.jl?
01:02 Why we created LLVM.jl?
01:42 Why not use C++ API directly?
02:15 Why you may want use LLVM.jl?
02:40 Installing LLVM.jl (state at 2017)
03:25 First steps in using LLVM.jl
04:25 Creating function that add two 32-bits integers and returning one 32-bits integer
04:57 Adding LLVM IR (intermediate representation)
06:05 Execution your code
06:45 Integrating generated IR with Julia
08:06 Using LLVM.jl for optimizing IR
09:06 Creating LLVM passes inside Julia
09:48 Closing remarks
Resources
LLVM.jl package repository: https://github.com/maleadt/LLVM.jl.

Timestamps added to the video.

source: gharchive/issue

repo: JuliaCommunity/YouTubeVideoTimestamps

license: MIT

license_type: permissive

license_source: github-api


text:
Change to HTTP url from SSH

This seems to cause trouble with rights
Please make sure you have the correct access rights
and the repository exists.
ERROR: LoadError: failed process: Process(`git clone --depth 1 git@github.com:GenieFramework/Stipple.jl.git --branch master --single-branch /var/folders/0j/d0xd373d2tb7zdzcsqrk3mpw0000gn/T/jl_ri4lRM/Stipple`, ProcessExited(128)) [128]

Made a similar change in https://github.com/JuliaComputing/MultiDocumenter.jl/commit/8fb2703fa95827efae989e13a2135c78affd0c24. Thanks for the suggestion!

source: gharchive/pull-request

authors: AbhimanyuAryan pfitzseb


text:
Simplest example fails in Julia v0.5-rc0

 rdiff( :(x^3) , x=2.)
ERROR: error in type inference due to #265
 in error(::String) at ./error.jl:21
 in typed_vcat(::Type{Any}, ::Array{ReverseDiffSource.ExNode,1}, ::Array{Any,1}) at ./abstractarray.jl:894
 in vcat(::Array{ReverseDiffSource.ExNode,1}, ::Array{Any,1}) at ./array.jl:653
 in prune!(::ReverseDiffSource.ExGraph, ::Array{ReverseDiffSource.ExNode,1}) at /Users/ortner/.julia/v0.5/ReverseDiffSource/src/graph.jl:268
 in #rdiff#126(::Void, ::Int64, ::Module, ::Bool, ::Bool, ::Array{Symbol,1}, ::Array{Any,1}, ::Function, ::Expr) at /Users/ortner/.julia/v0.5/ReverseDiffSource/src/rdiff.jl:100
 in (::ReverseDiffSource.#kw##rdiff)(::Array{Any,1}, ::ReverseDiffSource.#rdiff, ::Expr) at ./<missing>:0

I noticed that ReverseDiffSource passes tests on travis, but not on my machine. Any idea what might be going wrong? I'll be very happy to try and help fix this, but I'd need guidance

I ended up compiling
Version 0.5.0-dev+3426 (2016-04-06 17:13 UTC)
 _/ |\__'_|_|_|\__'_|  |  Commit 61f2d2b (120 days old master)
|__/                   |  x86_64-apple-darwin15.6.0

and on this version the tests pass on my own machine as well.

Closing the issue since it seems to work for you. It turned out that ReverseDiffSource was not working with 0.5 - release but it has been corrected in the latest master (not tagged yet).

authors: cortner fredo-dedup

license: mit

license_source: bigquery


text:
Adding support for ODE differentiation and interface for DifferentialEquations.jl

Hi!
I had been playing around with using TaylorDiff.jl for higher-order differentiation of numerical solutions of ODEs. I have a simple implementation of the method introduced in Appendix D in Taylor-Mode Automatic Differentiation for
Higher-Order Derivatives in JAX together with some simple examples of ODEs. I think this quite add some value to the library, since it is particularly important to compute higher-order derivatives of solutions of differential equations for some very specific applications.
I would be happy to make a PR with this, probably into a new module ode.jl. Would this be useful for the library? I would love to contribute :)

Hi,
Sure! This would be very helpful, and really appreciate your pull request.
In addition to adding code to src/, you can also optionally add tutorial-like examples in documentations. Doc tests ensure that examples are always run when the code gets updated, which is better than the current separate examples/ dir.
I will start to move the examples to documentations, but in the mean time feel free to start your work!

That is great! Yes, I was planning to also provide with an example we can include in the documentation.
I may need some feedback on specific TaylorDiff or SciML generic styles, which I am happy to provide. All this to say that I am sure there will be changes to make to my original PR, which I am looking for ;)

Sure! Don't worry too much about styles at the beginning, we can definitely refine after examples are up and running.

Hi, I just moved an example from examples/ folder to documentation, which could serve as a reference for your example.
In addition, I also cleaned up a script https://github.com/JuliaDiff/TaylorDiff.jl/blob/main/examples/integration.jl which I initially wrote in the last year to demonstrate how to use TaylorDiff.jl to compute jet coefficients for Taylor integration. I didn't go further to make it fully functional, but you can use it as a starting point to implement your solver!

Doc example: https://juliadiff.org/TaylorDiff.jl/dev/examples/halley/

Chris mentioned to me today that you are working on a review paper that will use higher-order autodiff to show several things. Let me know if there's anything specific I can help. In addition, I will also prepare a paper on the implementation and applications of TaylorDiff.jl early next year, and by then we can also collaborate

Hi @tansongchen ! Sorry for the delay in response.
I will take a look at the documentation for the examples and PR with the same format, thank you so much for the references.
Yes, we wrote this review about differentiable programming for differential equations. We are not planning to include examples of Taylor AD here, although I will include a sentence with a reference to Taylor AD in the next iteration of the manuscript. This PR is not related to the review, rather I recently learned about Taylor AD and I was playing with the library for some other examples.
Very excited to see where this projects move and happy to be in touch in the future about for possible collaborations!


text:
Improve KMM

Just a note for myself, the current impl. of KMM needs some work to get the following functionality back

[ ] Automatic setting σ as the median of pairwise distances if not provided
[ ] Dealing with matrix data
[ ] GPU compatibility
[ ] Dealing with an array of σs

Just a reminder for myself.

Regarding (2) what would you like to do with matrices? It is not clear to me from the description. Regarding (3), you mean a hyperparameter tuning algorithm? Please make sure that KMM is equipped with a tuning strategy. I don't remember seeing one in the papers. Regarding (4), I think we shouldn't set default parameters for users, the decision is quite arbitrary. Let users take the median or do something more sophisticated if they need.

Regarding (2) what would you like to do with matrices? It is not clear to me from the description.

Just a fallback methods of KMM for pre-allocated Julia matrices.

Regarding (3), you mean a hyperparameter tuning algorithm? Please make sure that KMM is equipped with a tuning strategy. I don't remember seeing one in the papers.

An array of σs corresponds to a sum of several RBF kernels. Those kernel computation can share the same pairwise distance computation.

Regarding (4), I think we shouldn't set default parameters for users, the decision is quite arbitrary. Let users take the median or do something more sophisticated if they need.

First of all, this default choice is mentioned in Sugiyama's book. Second, users have to compute the pairwise distances matrices to pick the median value and this computation will be not re-used when calling the KMM ratio estimation function.

Just a fallback methods of KMM for pre-allocated Julia matrices.

We need to brainstorm this further. Which interface are you proposing?
Currently we only support finite collections of samples in a way that
x_nu[i] is the i-th sample. Anything that deviates from this interface
requires additional design.

An array of σs corresponds to a sum of several RBF kernels. Those kernel
computation can share the same pairwise distance computation.

Unless this computation is used internally in the kmm/Julia.jl
implementation for example, I can only see it as a preprocessing step. Can
you elaborate on this? The previous code you had as far as I remember only
called the estimator with the median sigma.

First of all, this default choice is mentioned in Sugiyama's book. Second,
users have to compute the pairwise distances matrices to pick the median
value and this computation will be not re-used when calling the KMM ratio
estimation function.

Yes it is mentioned in the book as a common practice but KMM does not have
a formal tuning strategy. It is just a heuristic. Regarding the reuse of
the distance calculations I don't see this as an issue because for example
users may be interested in computing this median differently with external
knowledge. Furthermore, this computation is done once just to find out
which estimator to call at the end with the data. The only way I see for
including this default is via a new fitter method for KMM that mimics the
LCV for KLIEP. A code refactoring would be needed. Please let's discuss
this more before committing to coding.

We need to brainstorm this further. Which interface are you proposing?
Currently we only support finite collections of samples in a way that
x_nu[i] is the i-th sample. Anything that deviates from this interface
requires additional design.

I don't think we need much change to the interface. What I want to support is x_nu::AbstractMatrix where x_nu[:,i] is the i-th sample. I only need to update n_nu = last(size(x_nu)) and implement gaussian_gramian for AbstractMatrix as well.

Unless this computation is used internally in the kmm/Julia.jl
implementation for example, I can only see it as a preprocessing step. Can
you elaborate on this?

It's internal. Basically I want to reuse the pairwise distance matrices; see
https://github.com/xukai92/DensityRatioEstimation.jl/blob/df2b50fa7f2c2cd1e62c29b86ef8c081539269db/src/moment_matching.jl#L55

It is just a heuristic. Regarding the reuse of
the distance calculations I don't see this as an issue because for example
users may be interested in computing this median differently with external
knowledge.

Yes it is just a heuristic. But it's a more reasonable default than 1.0, which can easilly fail in a lot of cases.

Furthermore, this computation is done once just to find out
which estimator to call at the end with the data.

Can you explain more on this?

I don't think we need much change to the interface. What I want to support is x_nu::AbstractMatrix where x_nu[:,i] is the i-th sample. I only need to update n_nu = last(size(x_nu)) and implement gaussian_gramian for AbstractMatrix as well.

Check this entire thread on Discourse where I was suggesting a more general interface to finite collections: https://discourse.julialang.org/t/what-is-the-agreed-abstraction-for-the-size-of-finite-collections/32757 The issue is more profound, and we need to design carefully how to handle different layouts like dataframes, arrays, etc meanwhile that the length function doesn't work everywhere.

It's internal. Basically I want to reuse the pairwise distance matrices; see
https://github.com/xukai92/DensityRatioEstimation.jl/blob/df2b50fa7f2c2cd1e62c29b86ef8c081539269db/src/moment_matching.jl#L55

Exactly. This seems to be a preprocessing step with precomputed gramian matrices. We need a refactoring of the code to accommodate this if that is very much needed.

Yes it is just a heuristic. But it's a more reasonable default than 1.0, which can easilly fail in a lot of cases.

Fully agree. In that case we should consider eliminating the default 1.0 in the constructor of estimators. For KLIEP we can find the best sigma with LCV from a list of sigmas. We probably need a general fitter for both KMM and KLIEP that checks a bunch of sigmas.

Can you explain more on this?

I understand that you are doing an ensemble of estimators and averaging the result. Perhaps we need an interface for ensemble estimators, that would be more general and reusable across estimators.

This issue contains many sub-issues that we should discuss separately. Let's close this one, and open a new one for (1) API for other types of data arrangements (matrices as opposed to iterable of samples), and (2) helper heuristic functions to set parameters such as sigma.
Issue (1) is more complex and we need to be clever to use the trait system in our favor. Issue (2) in my opinion is something that could live in user's script and not necessarily be included in this package for general use. If we decide to provide better heuristics for sigma and other parameters, we need to define a public API for finding these heuristic values.


text:
Add GeoIO.formats()

This function should return a table-like object showing:

file format extension
backend used to load
backend used to save

If an entry is not available, it should show as missing.

Fixed on master.


text:
Highlighting for New FieldError Exception in julia 1.12

commit https://github.com/JuliaLang/julia/commit/7e5d9a3b4603907ce63660bb09d243cf4ece3609 adds FieldError exception.

Thanks!

authors: Pangoraw arhik

repo: JuliaEditorSupport/zed-julia


text:
Bringing UniGrid in line (cherry-picked)

Redoing #27 without unrelated commits

This is my attempt to make UniGrid return something that looks like a Vector, while being as efficient as I can make it.
I spent much time looking into "Lazy" implementations, but the best I could find was "Iterators.product", which returns Tuples, which don't work with some of the ApproximateGPs.jl stuff that I played with.
I had to change some eltype(...) == Vector(...) into eltype(...) <: AbstractVector to make the tests work with ColVecs output.
This is not final just yet, as there is some more polish to do. Either in this PR or in another one, I think it would be good to streamline the output types. I personally like what can be seen in KmeansAlg, which returns a Vector{<:Real} for scalar inputs x and a ColVecs otherwise (i.e multidim inputs), and I think that perhaps all methods could do that.

I had more something like this in mind:
struct UniformGrid{T,Tl} <: AbstractVector{T}
  grids::Tl # Collection of LinRange
end

Base.length(grid::UniformGrid) = product(length, grid.grids)

getindex(grid::UniformGrid, i) = collect(getindex(Iterators.product(grid.grids), i))

## Add more functions

And maybe try to use the specialization of the kernelkron matrix interface. This way, even for high-dimensional inputs we never fully allocate the matrix.
But maybe there is an already existing implementation somewhere, I will look into it.

copying

Pull Request Test Coverage Report for Build 1608492292

19 of 19 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+4.6%) to 98.538%

Totals

Change from base Build 1601664094:
4.6%

Covered Lines:
337

Relevant Lines:
342

💛  - Coveralls

So the closest thing I found is :
using LazyGrids
struct UniGrid{T,Tg,Tl} <: AbstractVector{T}
   linranges::Tl #  A vector of linranges
   grids::Tg # AbstractVector of lazy Array{T,D}
end
UniGrid(args::VarArgs{<:AbstractVector}) = UniGrid(collect(args), collect(ndgrid(args...)))
function update!(grid::UniGrid, args...)
  # Update grid.linranges in-place (it's a vector so we can)
  # Recompute the lazy instances of grid.grids
end
getindex(grid::Unigrid, i) = getindex.(grid.grids, i)
length(grid::Unigrid) = length(first(grid.grids))

I am not sure what the most efficient method is

I can run some tests? In my experiments yesterday I found that many of the "lazy" implementations had substantially higher computation costs, but that might be worth it for really high-dim use cases.
That said, I am not sure if it doesn't become a GP problem before one reaches the number of points where the memory for Z would be an issue?

That said, I am not sure if it doesn't become a GP problem before one reaches the number of points where the memory for Z would be an issue?

The more general idea is to take advantage of it. For D < 3 etc it can work for small N but then it will directly be intractable.
Generally one should use UniGrid with kernelkronmatrix but we still need to provide a standard interface for kernelmatrix

Ah, that is right. I now also remember some Toeplitz stuff that one can get for the kernel matrix for some kernels on a uniform grid.
That would make making a custom type worthwhile. I can give this a shot today.

I think the best shot would be to write a wrapper around Iterators.product while keeping the 1d grid to pass to kernelkronmat

This is obsolete now (implemented #31 )

authors: Crown421 coveralls theogf


text:
KomaUI phantom update when function. (Enhancement)

Update the text field (currently updated when file changes) when using:
obj_ui[] = brain_phantom3D()
or other phantom function. Info about the function and arguments for screenshots and repeatability.

https://github.com/JuliaHealth/KomaMRI.jl/blob/bea8f5f9f46f65771de9fa81771c82f645bbe994/src/ui/ExportUIFunctions.jl#L203

Hi! yes this would be nice. If the phantom is modified from the REPL, maybe it can say repl:name, like repl:brain3D, so it is clear that is not a file. The same could be done with sequences, etc.

authors: cncastillo curtcorum


text:
Problem with Sor

I tried to setup a small problem using sor for an linearequation.
Can you please show me how I set up this example:
sorError.txt
Thank you

@ChrisNabold, with sor you need to give A as a dense matrix. In you case you gave a sparse one.
sor(Matrix(A), b, 1.4)

should work fine.

A should be sparse if it is! There's an optimized implementation for sparse matrices.
The issue of op is that b is sparse (it shouldn't).
using SparseArrays, LinearAlgebra
A = sprand(100, 100, .1)
A = A + A' + 100I
b = A * ones(100)
x = sor(A, b, 0.1, maxiter = 100)

Also note that the stationary methods do not have a stopping criterion in terms of a residual being small, because that would be extra overhead (the idea being that stationary methods would go into a multigrid method or so, where you just do one or two iterations). So you have to set maxiter to something sensible!

authors: ChrisNabold Xx-fractale-xX haampie


text:
LinearTicks seems to alter the formatting for timeseries data

Hi, thanks for such a cool package! I am copying this discussion from the slack here regarding formatting ticklabels from timeseries data:

@icweaver said: I have some timeseries data that I was hoping to plot with AoG. The problem I am having is with the label formatting for something like this:
using AlgebraOfGraphics, CairoMakie, Dates, DataFrames
df = DataFrame(
	:t => DateTime("2021-01-01T00:00:00"):Hour(1):DateTime("2021-01-02T00:00:00"),
	:f => sort(rand(25))
)
plt = data(df) * mapping(:t=>"time", :f=>"flux")
draw(plt)

which seems to crowd the tick labels

I see that I can rotate things by passing draw(plt, axis=(xticklabelrotation=π/8,)) so I was wondering if there was also a similar way to modify the date formatting with some combination of xticks and xtickformat with Dates.format?

@ericphanson mentioned that it might have been possible to reduce the number of tickmarks in the past with xticks=LinearTicks(N), but that seems to also alter the original formatting of the ticklabels:

Is there another approach that we should be following to apply the desired formatting?

So, the date time ticks situation is not ideal, because to get full support they should be implemented in MakieLayout directly I think.
I'm adding a small helper in #252, so that in your example you could do
ticks = AlgebraOfGraphics.datetimeticks(hour, df.t[5:5:20]) # pass formatting function and list of date times
draw(plt, axis=(xticks=ticks,))

Unfortunately, getting it to work sensibly with LinearTicks is harder, because in the tick selection, the algorithm would ignore that it is dealing with datetimes under the hood and just work with the underlying floating point values.

This is great, thanks so much for the PR!

authors: icweaver piever


text:
New package: EntropyScaling v0.1.0

Registering package: EntropyScaling
Repository: https://github.com/se-schmitt/EntropyScaling.jl
Created by: @se-schmitt
Version: v0.1.0
Commit: dad5cbaf5ebd37e6bdf8fba5efe5c01dcfe51bda
Reviewed by: @se-schmitt
Reference: https://github.com/se-schmitt/EntropyScaling.jl/commit/dad5cbaf5ebd37e6bdf8fba5efe5c01dcfe51bda#commitcomment-148409751

Congratulations on the new package!
I just wanted to check with you that you think the name isn't too general, since the README says

This is an implementation of the entropy scaling framework introduced in [paper]

Are there other widely used approaches to entropy scaling that are not covered by this package? If there were, and you're not planning to support those in this package, maybe EntropyScaling isn't an ideal name, and you'd want to add a prefix to disambiguate it.
I'm not a domain expert on this, so I'll leave this entirely to your judgement. I also realize I'm a bit late in the review period, so I'm just making this comment temporarily blocking to give you a chance to review it before the automerge.
If you decide you want to go forward with the current name, I'll be happy to unblock

Hi @goerz, thanks! I would like to keep the current name as I'm planning to extend the package and make other similar methods available in EntropyScaling.jl.

authors: JuliaRegistrator goerz se-schmitt

repo: JuliaRegistries/General


text:
New version GenomicVectors: 0.4.1

Registering: GenomicVectors
Repository: https://github.com/phaverty/GenomicVectors.jl
Version: v0.4.1
Commit: 04cbb0ed3c2a5571e3d775c796650ae2acb452c5
Proposed by: @phaverty
Reviewed by: @phaverty
Reference: https://github.com/phaverty/GenomicVectors.jl/issues/20#issuecomment-488059318

https://github.com/JuliaRegistries/General/pull/452#issuecomment-488067739

I have fixed the build (some Project.toml and .travis.yml attention was required). As this is my first go with the new release system, hopefully you will forgive me for asking, "what do I do next?". (first, tied with RLEVectors :-) )

authors: JuliaRegistrator fredrikekre phaverty


text:
New version: BAT v0.4.0

Registering package: BAT
Repository: https://github.com/bat/BAT.jl
Created by: @oschulz
Version: v0.4.0
Commit: 7c11d0eccf1b91fb04c2bccdd9bb9920fecb1b0b
Reviewed by: @oschulz
Reference: https://github.com/bat/BAT.jl/commit/7c11d0eccf1b91fb04c2bccdd9bb9920fecb1b0b#commitcomment-35606066

Your new version pull request does not meet all of the guidelines for automatic merging.
Specifically, your pull request does not meet the following guidelines:

I was not able to install and import the package. See the Travis logs for details.

It is important to note that if your pull request does not meet the guidelines for automatic merging, this does not mean that your pull request will never be merged. It just means that your pull request will require manual review by a human.

These guidelines are intended not as requirements for packages but as very conservative guidelines, which, if your new package or new version of a package meets them, it may be automatically merged.

On a separate note, I see that you are registering a release with a version number of the form v0.X.Y.
Does your package have a stable public API? If so, then it's time for you to register version v1.0.0 of your package. (This is not a requirement. It's just a recommendation.)
If your package does not yet have a stable public API, then of course you are not yet ready to release version v1.0.0.

[noblock]

Your new version pull request met all of the guidelines for automatic merging.
I will automatically merge this pull request during the next cron job.
If you want to prevent this pull request from being auto-merged, simply leave a comment.
(If you want to post a comment without blocking auto-merging, you must include the text [noblock] in your comment.)

On a separate note, I see that you are registering a release with a version number of the form v0.X.Y.
Does your package have a stable public API? If so, then it's time for you to register version v1.0.0 of your package. (This is not a requirement. It's just a recommendation.)
If your package does not yet have a stable public API, then of course you are not yet ready to release version v1.0.0.

[noblock]

authors: JuliaRegistrator zeptodoctor


text:
Multiple ServerWS currently shares channels.

const DEFAULTOPTIONS = (in = Channel(1),
                    out = Channel(2),

creates instances of channels. These are passed by reference to every new instances of ServerWS.
Consequences of .in and .out being shared between instances: All ServerWS instances would be closed when closing one of them. Error messages would seem to originate from another ServerWS.
This returning true indicates that the bug isn't fixed:
           h(r) = WebSockets.Response(200)
           w(s) = nothing
           sws1 = WebSockets.ServerWS(h, w)
           sws2 = WebSockets.ServerWS(h, w)
           put!(sws1.in, "Close")
           isready(sws2.in)  -> true

This workaround currently returns false and shows how to generate new channels every time:
           h(r) = WebSockets.Response(200)
           w(s) = nothing
           sws1 = WebSockets.ServerWS(h, w)
           sws2 = WebSockets.ServerWS(h, w, in = Channel(1), out = Channel(2))
           put!(sws1.in, "Close")
           isready(sws2.in)  -> false

😅

I'm thinking replacing
const DEFAULTOPTIONS
with
defaultoptions()
would solve this.

authors: EricForgy hustf


text:
SRX - "show security monitoring" parser

Hi All,
anyone working on a "show security monitoring" parser for SRX devices? Would be nice to also see CPU, memory and flows/sessions on a per FPC/PIC basis in the dashboard.
Thanks,
Martin
show security monitoring
node0:
              Flow session   Flow session     CP session     CP session

FPC PIC CPU Mem        current        maximum        current        maximum
0   0   0  13              0              0              0              0
0   1   0   6             96        6291456            101        7549747
0   2   0   6             89        6291456             89        7549747
0   3   0   6             99        6291456             99        7549747
Total Sessions:            284       18874368            289       22649241
node1:
              Flow session   Flow session     CP session     CP session

FPC PIC CPU Mem        current        maximum        current        maximum
0   0   0  13              0              0              0              0
0   1   0   6             77        6291456             79        7549747
0   2   0   6             70        6291456             70        7549747
0   3   0   6             72        6291456             75        7549747
Total Sessions:            219       18874368            224       22649241

Hi
Could you please put the output command in xml?
Thanks
Sent from my iPhone

On 21 Jun 2017, at 18:47, mziegler8888 notifications@github.com wrote:
Hi All,
anyone working on a "show security monitoring" parser for SRX devices? Would be nice to also see CPU, memory and flows/sessions on a per FPC/PIC basis in the dashboard.
Thanks,
Martin
show security monitoring
node0:
          Flow session   Flow session     CP session     CP session

FPC PIC CPU Mem current maximum current maximum
0 0 0 13 0 0 0 0
0 1 0 6 96 6291456 101 7549747
0 2 0 6 89 6291456 89 7549747
0 3 0 6 99 6291456 99 7549747
Total Sessions: 284 18874368 289 22649241
node1:
          Flow session   Flow session     CP session     CP session

FPC PIC CPU Mem current maximum current maximum
0 0 0 13 0 0 0 0
0 1 0 6 77 6291456 79 7549747
0 2 0 6 70 6291456 70 7549747
0 3 0 6 72 6291456 75 7549747
Total Sessions: 219 18874368 224 22649241
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Sure...
`

    <multi-routing-engine-item>

        <re-name>node0</re-name>

        <performance-summary-information xmlns="http://xml.juniper.net/junos/15.1X49/junos-spu-mon">
            <performance-summary-statistics>
                <fpc-number>0</fpc-number>
                <pic-number>0</pic-number>
                <spu-cpu-utilization>0</spu-cpu-utilization>
                <spu-memory-utilization>13</spu-memory-utilization>
                <spu-current-flow-session>0</spu-current-flow-session>
                <spu-max-flow-session>0</spu-max-flow-session>
                <spu-current-cp-session>0</spu-current-cp-session>
                <spu-max-cp-session>0</spu-max-cp-session>
            </performance-summary-statistics>
        </performance-summary-information>
        <performance-summary-information xmlns="http://xml.juniper.net/junos/15.1X49/junos-spu-mon">
            <performance-summary-statistics>
                <fpc-number>0</fpc-number>
                <pic-number>1</pic-number>
                <spu-cpu-utilization>0</spu-cpu-utilization>
                <spu-memory-utilization>6</spu-memory-utilization>
                <spu-current-flow-session>77</spu-current-flow-session>
                <spu-max-flow-session>6291456</spu-max-flow-session>
                <spu-current-cp-session>89</spu-current-cp-session>
                <spu-max-cp-session>7549747</spu-max-cp-session>
            </performance-summary-statistics>
        </performance-summary-information>
        <performance-summary-information xmlns="http://xml.juniper.net/junos/15.1X49/junos-spu-mon">
            <performance-summary-statistics>
                <fpc-number>0</fpc-number>
                <pic-number>2</pic-number>
                <spu-cpu-utilization>0</spu-cpu-utilization>
                <spu-memory-utilization>6</spu-memory-utilization>
                <spu-current-flow-session>73</spu-current-flow-session>
                <spu-max-flow-session>6291456</spu-max-flow-session>
                <spu-current-cp-session>73</spu-current-cp-session>
                <spu-max-cp-session>7549747</spu-max-cp-session>
            </performance-summary-statistics>
        </performance-summary-information>
        <performance-summary-information xmlns="http://xml.juniper.net/junos/15.1X49/junos-spu-mon">
            <performance-summary-statistics>
                <fpc-number>0</fpc-number>
                <pic-number>3</pic-number>
                <spu-cpu-utilization>0</spu-cpu-utilization>
                <spu-memory-utilization>6</spu-memory-utilization>
                <spu-current-flow-session>75</spu-current-flow-session>
                <spu-max-flow-session>6291456</spu-max-flow-session>
                <spu-current-cp-session>75</spu-current-cp-session>
                <spu-max-cp-session>7549747</spu-max-cp-session>
            </performance-summary-statistics>
        </performance-summary-information>
        <performance-summary-information xmlns="http://xml.juniper.net/junos/15.1X49/junos-spu-mon">
            <performance-summary-statistics>
                <fpc-number>Total Sessions:</fpc-number>
                <pic-number></pic-number>
                <spu-cpu-utilization></spu-cpu-utilization>
                <spu-memory-utilization></spu-memory-utilization>
                <spu-current-flow-session>225</spu-current-flow-session>
                <spu-max-flow-session>18874368</spu-max-flow-session>
                <spu-current-cp-session>237</spu-current-cp-session>
                <spu-max-cp-session>22649241</spu-max-cp-session>
            </performance-summary-statistics>
        </performance-summary-information>
    </multi-routing-engine-item>

    <multi-routing-engine-item>

        <re-name>node1</re-name>

        <performance-summary-information xmlns="http://xml.juniper.net/junos/15.1X49/junos-spu-mon">
            <performance-summary-statistics>
                <fpc-number>0</fpc-number>
                <pic-number>0</pic-number>
                <spu-cpu-utilization>0</spu-cpu-utilization>
                <spu-memory-utilization>13</spu-memory-utilization>
                <spu-current-flow-session>0</spu-current-flow-session>
                <spu-max-flow-session>0</spu-max-flow-session>
                <spu-current-cp-session>0</spu-current-cp-session>
                <spu-max-cp-session>0</spu-max-cp-session>
            </performance-summary-statistics>
        </performance-summary-information>
        <performance-summary-information xmlns="http://xml.juniper.net/junos/15.1X49/junos-spu-mon">
            <performance-summary-statistics>
                <fpc-number>0</fpc-number>
                <pic-number>1</pic-number>
                <spu-cpu-utilization>0</spu-cpu-utilization>
                <spu-memory-utilization>6</spu-memory-utilization>
                <spu-current-flow-session>46</spu-current-flow-session>
                <spu-max-flow-session>6291456</spu-max-flow-session>
                <spu-current-cp-session>46</spu-current-cp-session>
                <spu-max-cp-session>7549747</spu-max-cp-session>
            </performance-summary-statistics>
        </performance-summary-information>
        <performance-summary-information xmlns="http://xml.juniper.net/junos/15.1X49/junos-spu-mon">
            <performance-summary-statistics>
                <fpc-number>0</fpc-number>
                <pic-number>2</pic-number>
                <spu-cpu-utilization>0</spu-cpu-utilization>
                <spu-memory-utilization>6</spu-memory-utilization>
                <spu-current-flow-session>34</spu-current-flow-session>
                <spu-max-flow-session>6291456</spu-max-flow-session>
                <spu-current-cp-session>34</spu-current-cp-session>
                <spu-max-cp-session>7549747</spu-max-cp-session>
            </performance-summary-statistics>
        </performance-summary-information>
        <performance-summary-information xmlns="http://xml.juniper.net/junos/15.1X49/junos-spu-mon">
            <performance-summary-statistics>
                <fpc-number>0</fpc-number>
                <pic-number>3</pic-number>
                <spu-cpu-utilization>0</spu-cpu-utilization>
                <spu-memory-utilization>6</spu-memory-utilization>
                <spu-current-flow-session>47</spu-current-flow-session>
                <spu-max-flow-session>6291456</spu-max-flow-session>
                <spu-current-cp-session>47</spu-current-cp-session>
                <spu-max-cp-session>7549747</spu-max-cp-session>
            </performance-summary-statistics>
        </performance-summary-information>
        <performance-summary-information xmlns="http://xml.juniper.net/junos/15.1X49/junos-spu-mon">
            <performance-summary-statistics>
                <fpc-number>Total Sessions:</fpc-number>
                <pic-number></pic-number>
                <spu-cpu-utilization></spu-cpu-utilization>
                <spu-memory-utilization></spu-memory-utilization>
                <spu-current-flow-session>127</spu-current-flow-session>
                <spu-max-flow-session>18874368</spu-max-flow-session>
                <spu-current-cp-session>127</spu-current-cp-session>
                <spu-max-cp-session>22649241</spu-max-cp-session>
            </performance-summary-statistics>
        </performance-summary-information>
    </multi-routing-engine-item>

</multi-routing-engine-results>
<cli>
    <banner>{primary:node0}</banner>
</cli>

`

Question,
It is possible to have the same command per node?  like 'show security monitoring node0' and 'show security monitoring node1' ?
Regards

Yes, it's possible.

I don't have any lab to test it....
Could you please do it for me?  or if I can have access to your setup.
Regards
parser:
    regex-command: show\s+security\s+monitoring\s+\|\s+display\s+xml
    matches:
    -
        type: multi-value
        method: xpath
        xpath: //*[local-name() = 'multi-routing-engine-item']/*[local-name() = 'performance-summary-information']/*[local-name() = 'performance-summary-statistics']
        loop:
            node: ../../*[local-name() = 're-name']
            fpc: ./*[local-name() = 'fpc-number']
            pic: ./*[local-name() = 'pic-number']
            sub-matches:
            -
                xpath: ./*[local-name() = 'spu-cpu-utilization']
                variable-name:  $host.security.monitoring.node$node.fpc$fpc.pic$pic.spu-cpu-utilization
            -
                xpath: ./*[local-name() = 'spu-memory-utilization']
                variable-name:  $host.security.monitoring.node$node.fpc$fpc.pic$pic.spu-memory-utilization
            -
                xpath: ./*[local-name() = 'spu-current-flow-session']
                variable-name:  $host.security.monitoring.node$node.fpc$fpc.pic$pic.spu-current-flow-session
            -
                xpath: ./*[local-name() = 'spu-max-flow-session']
                variable-name:  $host.security.monitoring.node$node.fpc$fpc.pic$pic.spu-max-flow-session
            -
                xpath: ./*[local-name() = 'spu-current-cp-session']
                variable-name:  $host.security.monitoring.node$node.fpc$fpc.pic$pic.spu-current-cp-session
            -
                xpath: ./*[local-name() = 'spu-max-cp-session']
                variable-name:  $host.security.monitoring.node$node.fpc$fpc.pic$pic.spu-max-cp-session

[fw-01-nbg04]: Executing command: show security monitoring | display xml [fw-01-nbg04]: Exception found. 'NoneType' object has no attribute 'replace' Traceback (most recent call last):   File "/opt/open-nti/open-nti.py", line 400, in parse_result     keys[key_tmp]=node.xpath(keys_tmp[key_tmp])[0].text.replace(" ","_").strip() AttributeError: 'NoneType' object has no attribute 'replace'

I'll try to find a vSRX in cluster to test it :(

Sorry by my delay but I'm still looking for a testing environment (security is not my forte :) )

Absolutely no problem. Take your time ;)
Unfortunately I cannot give you access to the cluster. The only thing i can offer you is testing and/or providing output.

Hi @mziegler8888
I just committed a new parser using the same logic (more than one 'key' in the multi value block)
https://github.com/Juniper/open-nti/blob/master/data/junos_parsers/show-ddos-protection-protocols-statistics-terse.parser.yaml
and it works, so IMHO there is something else we are missing in the srx scenario.

Hi Efrain,
just checked again and found out that it still throws an exception but it looks like metrics are collected properly. Will wait for a few minutes to check if metrics are available.
Thank you,
Martin
root@telemetry:/opt/open-nti# make cron-debug TAG=srx5400
docker exec -i -t opennti_con /usr/bin/python /opt/open-nti/open-nti.py -s -c --tag srx5400
Collector Thread-1 scheduled with following hosts: ['.']
Connecting to host: .
[.]: Executing command: show version | display xml
[.]: Host will now be referenced as :
[]: Executing command: show security monitoring | display xml
[]: Exception found.
'NoneType' object has no attribute 'replace'
Traceback (most recent call last):
File "/opt/open-nti/open-nti.py", line 400, in parse_result
keys[key_tmp]=node.xpath(keys_tmp[key_tmp])[0].text.replace(" ","_").strip()
AttributeError: 'NoneType' object has no attribute 'replace'
[]: Parser found and processed, going to next comand.
[]: timestamp_tracking - CLI collection 4
Inserting into database the following datapoints:
[{'fields': {'delta_str': 'N/A', 'value_str': 'srx5400'},
'measurement': 'base-info',
'tags': {'device': '',
'kpi': 'base-info',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 0},
'measurement': '.security.monitoring.nodenode0.fpc0.pic0.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic0.spu-cpu-utilization',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 13},
'measurement': '.security.monitoring.nodenode0.fpc0.pic0.spu-memory-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic0.spu-memory-utilization',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 0},
'measurement': '.security.monitoring.nodenode0.fpc0.pic0.spu-current-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic0.spu-current-flow-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 0},
'measurement': '.security.monitoring.nodenode0.fpc0.pic0.spu-max-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic0.spu-max-flow-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 0},
'measurement': '.security.monitoring.nodenode0.fpc0.pic0.spu-current-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic0.spu-current-cp-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 0},
'measurement': '.security.monitoring.nodenode0.fpc0.pic0.spu-max-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic0.spu-max-cp-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 32, 'value': 32},
'measurement': '.security.monitoring.nodenode0.fpc0.pic1.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic1.spu-cpu-utilization',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc0.pic1.spu-memory-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic1.spu-memory-utilization',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 22197, 'value': 22280},
'measurement': '.security.monitoring.nodenode0.fpc0.pic1.spu-current-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic1.spu-current-flow-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc0.pic1.spu-max-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic1.spu-max-flow-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 22363, 'value': 22446},
'measurement': '.security.monitoring.nodenode0.fpc0.pic1.spu-current-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic1.spu-current-cp-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc0.pic1.spu-max-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic1.spu-max-cp-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 32, 'value': 32},
'measurement': '.security.monitoring.nodenode0.fpc0.pic2.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic2.spu-cpu-utilization',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc0.pic2.spu-memory-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic2.spu-memory-utilization',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21410, 'value': 21486},
'measurement': '.security.monitoring.nodenode0.fpc0.pic2.spu-current-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic2.spu-current-flow-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc0.pic2.spu-max-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic2.spu-max-flow-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 22959, 'value': 23035},
'measurement': '.security.monitoring.nodenode0.fpc0.pic2.spu-current-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic2.spu-current-cp-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc0.pic2.spu-max-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic2.spu-max-cp-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 29, 'value': 29},
'measurement': '.security.monitoring.nodenode0.fpc0.pic3.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic3.spu-cpu-utilization',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc0.pic3.spu-memory-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic3.spu-memory-utilization',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21804, 'value': 21879},
'measurement': '.security.monitoring.nodenode0.fpc0.pic3.spu-current-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic3.spu-current-flow-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc0.pic3.spu-max-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic3.spu-max-flow-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 22010, 'value': 22085},
'measurement': '.security.monitoring.nodenode0.fpc0.pic3.spu-current-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic3.spu-current-cp-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc0.pic3.spu-max-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic3.spu-max-cp-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 33, 'value': 33},
'measurement': '.security.monitoring.nodenode0.fpc1.pic0.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic0.spu-cpu-utilization',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc1.pic0.spu-memory-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic0.spu-memory-utilization',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21716, 'value': 21716},
'measurement': '.security.monitoring.nodenode0.fpc1.pic0.spu-current-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic0.spu-current-flow-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6291456, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc1.pic0.spu-max-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic0.spu-max-flow-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21926, 'value': 21926},
'measurement': '.security.monitoring.nodenode0.fpc1.pic0.spu-current-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic0.spu-current-cp-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 7549747, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc1.pic0.spu-max-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic0.spu-max-cp-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 30, 'value': 30},
'measurement': '.security.monitoring.nodenode0.fpc1.pic1.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic1.spu-cpu-utilization',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc1.pic1.spu-memory-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic1.spu-memory-utilization',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21853, 'value': 21853},
'measurement': '.security.monitoring.nodenode0.fpc1.pic1.spu-current-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic1.spu-current-flow-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6291456, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc1.pic1.spu-max-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic1.spu-max-flow-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 22077, 'value': 22077},
'measurement': '.security.monitoring.nodenode0.fpc1.pic1.spu-current-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic1.spu-current-cp-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 7549747, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc1.pic1.spu-max-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic1.spu-max-cp-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 29, 'value': 29},
'measurement': '.security.monitoring.nodenode0.fpc1.pic2.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic2.spu-cpu-utilization',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc1.pic2.spu-memory-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic2.spu-memory-utilization',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21147, 'value': 21147},
'measurement': '.security.monitoring.nodenode0.fpc1.pic2.spu-current-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic2.spu-current-flow-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6291456, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc1.pic2.spu-max-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic2.spu-max-flow-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21352, 'value': 21352},
'measurement': '.security.monitoring.nodenode0.fpc1.pic2.spu-current-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic2.spu-current-cp-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 7549747, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc1.pic2.spu-max-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic2.spu-max-cp-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 25, 'value': 25},
'measurement': '.security.monitoring.nodenode0.fpc1.pic3.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic3.spu-cpu-utilization',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc1.pic3.spu-memory-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic3.spu-memory-utilization',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21707, 'value': 21707},
'measurement': '.security.monitoring.nodenode0.fpc1.pic3.spu-current-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic3.spu-current-flow-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6291456, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc1.pic3.spu-max-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic3.spu-max-flow-session',
       'node': 'node0',
       'pic': '3',

       'product-model': 'srx5400',
       'version': '15.1X49-D90.7'}},

{'fields': {'delta': 21885, 'value': 21885},
'measurement': '.security.monitoring.nodenode0.fpc1.pic3.spu-current-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic3.spu-current-cp-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 7549747, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc1.pic3.spu-max-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic3.spu-max-cp-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 5, 'value': 5},
'measurement': 'open-nti-stats',
'tags': {'device': '',
'kpi': 'open-nti-stats',
'product-model': 'srx5400',
'stats': 'collection-time',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 1, 'value': 1},
'measurement': 'open-nti-stats',
'tags': {'device': '',
'kpi': 'open-nti-stats',
'product-model': 'srx5400',
'stats': 'collection-successful',
'version': '15.1X49-D90.7'}}]
[]: timestamp_tracking - total collection 5

On 10. Jul 2017, at 15:20, Efrain notifications@github.com wrote:
Hi @mziegler8888
I just committed a new parser using the same logic (more than one 'key' in the multi value block)
https://github.com/Juniper/open-nti/blob/master/data/junos_parsers/show-ddos-protection-protocols-statistics-terse.parser.yaml
and it works, so IMHO there is something else we are missing in the srx scenario.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Just recognized that metrics are only for node 0 but not for node 1. Perhaps that has something to do with the exception…

On 11. Jul 2017, at 09:17, Martin Ziegler martin.ziegler@idealo.de wrote:
Hi Efrain,
just checked again and found out that it still throws an exception but it looks like metrics are collected properly. Will wait for a few minutes to check if metrics are available.
Thank you,
Martin
root@telemetry:/opt/open-nti# make cron-debug TAG=srx5400
docker exec -i -t opennti_con /usr/bin/python /opt/open-nti/open-nti.py -s -c --tag srx5400
Collector Thread-1 scheduled with following hosts: ['.']
Connecting to host: .
[.]: Executing command: show version | display xml
[.]: Host will now be referenced as :
[]: Executing command: show security monitoring | display xml
[]: Exception found.
'NoneType' object has no attribute 'replace'
Traceback (most recent call last):
File "/opt/open-nti/open-nti.py", line 400, in parse_result
keys[key_tmp]=node.xpath(keys_tmp[key_tmp])[0].text.replace(" ","_").strip()
AttributeError: 'NoneType' object has no attribute 'replace'
[]: Parser found and processed, going to next comand.
[]: timestamp_tracking - CLI collection 4
Inserting into database the following datapoints:
[{'fields': {'delta_str': 'N/A', 'value_str': 'srx5400'},
'measurement': 'base-info',
'tags': {'device': '',
'kpi': 'base-info',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 0},
'measurement': '.security.monitoring.nodenode0.fpc0.pic0.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic0.spu-cpu-utilization',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 13},
'measurement': '.security.monitoring.nodenode0.fpc0.pic0.spu-memory-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic0.spu-memory-utilization',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 0},
'measurement': '.security.monitoring.nodenode0.fpc0.pic0.spu-current-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic0.spu-current-flow-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 0},
'measurement': '.security.monitoring.nodenode0.fpc0.pic0.spu-max-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic0.spu-max-flow-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 0},
'measurement': '.security.monitoring.nodenode0.fpc0.pic0.spu-current-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic0.spu-current-cp-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 0},
'measurement': '.security.monitoring.nodenode0.fpc0.pic0.spu-max-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic0.spu-max-cp-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 32, 'value': 32},
'measurement': '.security.monitoring.nodenode0.fpc0.pic1.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic1.spu-cpu-utilization',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc0.pic1.spu-memory-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic1.spu-memory-utilization',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 22197, 'value': 22280},
'measurement': '.security.monitoring.nodenode0.fpc0.pic1.spu-current-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic1.spu-current-flow-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc0.pic1.spu-max-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic1.spu-max-flow-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 22363, 'value': 22446},
'measurement': '.security.monitoring.nodenode0.fpc0.pic1.spu-current-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic1.spu-current-cp-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc0.pic1.spu-max-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic1.spu-max-cp-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 32, 'value': 32},
'measurement': '.security.monitoring.nodenode0.fpc0.pic2.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic2.spu-cpu-utilization',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc0.pic2.spu-memory-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic2.spu-memory-utilization',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21410, 'value': 21486},
'measurement': '.security.monitoring.nodenode0.fpc0.pic2.spu-current-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic2.spu-current-flow-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc0.pic2.spu-max-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic2.spu-max-flow-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 22959, 'value': 23035},
'measurement': '.security.monitoring.nodenode0.fpc0.pic2.spu-current-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic2.spu-current-cp-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc0.pic2.spu-max-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic2.spu-max-cp-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 29, 'value': 29},
'measurement': '.security.monitoring.nodenode0.fpc0.pic3.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic3.spu-cpu-utilization',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc0.pic3.spu-memory-utilization',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic3.spu-memory-utilization',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21804, 'value': 21879},
'measurement': '.security.monitoring.nodenode0.fpc0.pic3.spu-current-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic3.spu-current-flow-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc0.pic3.spu-max-flow-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic3.spu-max-flow-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 22010, 'value': 22085},
'measurement': '.security.monitoring.nodenode0.fpc0.pic3.spu-current-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic3.spu-current-cp-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 0, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc0.pic3.spu-max-cp-session',
'tags': {'device': '',
'fpc': '0',
'kpi': '.security.monitoring.nodenode0.fpc0.pic3.spu-max-cp-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 33, 'value': 33},
'measurement': '.security.monitoring.nodenode0.fpc1.pic0.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic0.spu-cpu-utilization',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc1.pic0.spu-memory-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic0.spu-memory-utilization',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21716, 'value': 21716},
'measurement': '.security.monitoring.nodenode0.fpc1.pic0.spu-current-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic0.spu-current-flow-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6291456, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc1.pic0.spu-max-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic0.spu-max-flow-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21926, 'value': 21926},
'measurement': '.security.monitoring.nodenode0.fpc1.pic0.spu-current-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic0.spu-current-cp-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 7549747, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc1.pic0.spu-max-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic0.spu-max-cp-session',
'node': 'node0',
'pic': '0',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 30, 'value': 30},
'measurement': '.security.monitoring.nodenode0.fpc1.pic1.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic1.spu-cpu-utilization',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc1.pic1.spu-memory-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic1.spu-memory-utilization',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21853, 'value': 21853},
'measurement': '.security.monitoring.nodenode0.fpc1.pic1.spu-current-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic1.spu-current-flow-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6291456, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc1.pic1.spu-max-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic1.spu-max-flow-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 22077, 'value': 22077},
'measurement': '.security.monitoring.nodenode0.fpc1.pic1.spu-current-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic1.spu-current-cp-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 7549747, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc1.pic1.spu-max-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic1.spu-max-cp-session',
'node': 'node0',
'pic': '1',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 29, 'value': 29},
'measurement': '.security.monitoring.nodenode0.fpc1.pic2.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic2.spu-cpu-utilization',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc1.pic2.spu-memory-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic2.spu-memory-utilization',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21147, 'value': 21147},
'measurement': '.security.monitoring.nodenode0.fpc1.pic2.spu-current-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic2.spu-current-flow-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6291456, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc1.pic2.spu-max-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic2.spu-max-flow-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21352, 'value': 21352},
'measurement': '.security.monitoring.nodenode0.fpc1.pic2.spu-current-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic2.spu-current-cp-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 7549747, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc1.pic2.spu-max-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic2.spu-max-cp-session',
'node': 'node0',
'pic': '2',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 25, 'value': 25},
'measurement': '.security.monitoring.nodenode0.fpc1.pic3.spu-cpu-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic3.spu-cpu-utilization',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6, 'value': 6},
'measurement': '.security.monitoring.nodenode0.fpc1.pic3.spu-memory-utilization',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic3.spu-memory-utilization',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 21707, 'value': 21707},
'measurement': '.security.monitoring.nodenode0.fpc1.pic3.spu-current-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic3.spu-current-flow-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 6291456, 'value': 6291456},
'measurement': '.security.monitoring.nodenode0.fpc1.pic3.spu-max-flow-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic3.spu-max-flow-session',
      'node': 'node0',
      'pic': '3',

      'product-model': 'srx5400',
      'version': '15.1X49-D90.7'}},

{'fields': {'delta': 21885, 'value': 21885},
'measurement': '.security.monitoring.nodenode0.fpc1.pic3.spu-current-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic3.spu-current-cp-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 7549747, 'value': 7549747},
'measurement': '.security.monitoring.nodenode0.fpc1.pic3.spu-max-cp-session',
'tags': {'device': '',
'fpc': '1',
'kpi': '.security.monitoring.nodenode0.fpc1.pic3.spu-max-cp-session',
'node': 'node0',
'pic': '3',
'product-model': 'srx5400',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 5, 'value': 5},
'measurement': 'open-nti-stats',
'tags': {'device': '',
'kpi': 'open-nti-stats',
'product-model': 'srx5400',
'stats': 'collection-time',
'version': '15.1X49-D90.7'}},
{'fields': {'delta': 1, 'value': 1},
'measurement': 'open-nti-stats',
'tags': {'device': '',
'kpi': 'open-nti-stats',
'product-model': 'srx5400',
'stats': 'collection-successful',
'version': '15.1X49-D90.7'}}]
[]: timestamp_tracking - total collection 5

On 10. Jul 2017, at 15:20, Efrain notifications@github.com wrote:
Hi @mziegler8888
I just committed a new parser using the same logic (more than one 'key' in the multi value block)
https://github.com/Juniper/open-nti/blob/master/data/junos_parsers/show-ddos-protection-protocols-statistics-terse.parser.yaml
and it works, so IMHO there is something else we are missing in the srx scenario.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

repo: Juniper/open-nti