Child pages
  • NMIS Collect and Update Plugins for Flexible Data Collection

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The following is included the README file of the NMIS8 source code, you can find the original here: https://github.com/Opmantek/nmisnmis8/blob/masternmis8_dev/install/plugins/README

...

For a NMIS 9 reference guide, please check the following documentation

NMIS plugins


...



NMIS code plugins are meant to augment and extend the update and collect functionality, if and when classic modelling doesn't suffice to handle a particular scenario.

Each plugin must be valid perl, be named X.pm, must have a 'package X;' line, and its package name must not clash with the other NMIS components. the plugin MUST NOT use Exporter to export anything from its namespace.

it's

...

recommended

...

that

...

the

...

plugin

...

have

...

a

...

version

...

declaration

...

right

...

after

...

the

...

package

...

line,

...

i.e.

...

'our

...

$VERSION

...

=

...

"1.2.3";'

...


The plugin

...

may

...

load

...

extra

...

perl

...

modules

...

with

...

use

...

or

...

require,

...

but

...

it

...

must

...

not

...

use

...

any

...

package-level

...

global

...

variables.

...

all

...

its

...

variables

...

and

...

any objects that

...

it

...

might

...

create

...

must

...

have

...

local

...

scope.

...


A plugin

...

can

...

offer

...

one

...

or

...

more

...

of

...

the

...

functions

...

update_plugin(),

...

collect_plugin()

...

 after_update_plugin()

...

or

...

after_collect_plugin().



collect_plugin

...

and

...

update_plugin

...


---------------------------------

...


These functions

...

will

...

be

...

called

...

for

...

each

...

node

...

in

...

sequence,

...

 independently (and

...

possibly

...

in

...

separate

...

processes),

...

at

...

the

...

end

...

of

...

the collect/update

...

operation.

...

all

...

existing

...

valid

...

plugins

...

will

...

be

...

loaded,

...

and all available

...

update_plugin()/collect_plugin()

...

functions

...

will

...

be

...

applied

...

to every node

...

regardless

...

of

...

the

...

plugins

...

success

...

or

...

failure

...

indications.

the

...

calling

...

interface

...

is

...

the

...

same

...

for

...

both

...

functions:

Code Block
sub update_plugin(node => nodename, sys => live sys object, 

...


config => read-only configuration object/hash)

...



sub collect_plugin(node => nodename, sys => live sys object, 

...


config => configuration object/hash, treat as read-only)

...




The plugin

...

can

...

modify

...

any

...

node

...

attributes

...

via

...

sys

...

where

...

required.

...

it

...

may

...

call
other

...

nmis

...

code

...

(but

...

care

...

needs

...

to

...

be

...

taken

...

of

...

nmmis

...

config/table

...

caching

...

if

...


that

...

is

...

done).

...

neither

...

the

...

local

...

config

...

object

...

nor

...

the

...

global

...

nmis

...

config
must

...

be

...

modified

...

by

...

a

...

plugin.

return

...

values:

-

...

(0

...

or

...

undef,rest

...

ignored)

...

means

...

no

...

changes

...

were

...

made,

...

or

...

that

...

the
plugin

...

declined

...

to

...

run

...

altogether

...

(because

...

this

...

node

...

has

...

a
non-matching

...

model

...

for

...

example)

-

...

(1,rest

...

ignored)

...

means

...

changes

...

were

...

made

...

to

...

the

...

sys

...

object,

...

and

...

nmis
will

...

save

...

the

...

nodeinfo

...

and

...

view

...

components.

-

...

(2,list

...

of

...

error

...

messages)

...

means

...

the

...

plugin

...

failed

...

to

...

work

...

and

...

NMIS
should

...

please

...

log

...

the

...

error

...

messages.

...

no

...

nodeinfo/view

...

saving

...

will

...

be

...


performed.

after_update_plugin()

...

and

...

after_collect_plugin():
-------------------------------------------------

these

...

functions

...

will

...

be

...

called

...

ONCE

...

at

...

the

...

end

...

of

...

the

...

respective

...

operation,
after

...

all

...

the

...

nodes

...

were

...

handled.

...

there

...

is

...

thus

...

no

...

node

...

context

...

for

...

these
plugin

...

functions.

just

...

like

...

with

...

the

...

per-node

...

functions,

...

all

...

existing

...

valid

...

plugins

...

will

...

be

...


loaded

...

and

...

all

...

available

...

after_update_plugin()/after_collect_plugin()

...

functions

...


will

...

be

...

run

...

in

...

sequence.

the

...

calling

...

interface

...

is

...

the

...

same

...

for

...

both

...

functions:

sub

...

after_update_plugin(nodes

...

=>

...

list

...

of

...

nodes

...

that

...

were

...

handled,

...


sys

...

=>

...

live

...

sys

...

object,

...


config

...

=>

...

read-only

...

configuration

...

object/hash)

sub

...

after_collect_plugin(nodes

...

=>

...

list

...

of

...

nodes

...

that

...

were

...

handled,
sys

...

=>

...

live

...

sys

...

object,
config

...

=>

...

configuration

...

object/hash,

...

treat

...

as

...

read-only)

the

...

sys

...

object

...

is

...

the

...

'global'

...

one

...

used

...

for

...

calculating

...

system-wide

...

metrics
and

...

so

...

on.

...

the

...

plugin

...

can

...

modify

...

any

...

attributes

...

via

...

sys

...

where

...

required.

...

it

...


may

...

call

...

other

...

nmis

...

code

...

(but

...

care

...

needs

...

to

...

be

...

taken

...

of

...

nmis

...

config/table

...


caching

...

if

...

that

...

is

...

done).

...

neither

...

the

...

local

...

config

...

object

...

nor

...

the

...


global

...

nmis

...

config

...

must

...

be

...

modified

...

by

...

a

...

plugin.

return

...

values:

-

...

(0

...

or

...

undef,rest

...

ignored)

...

means

...

no

...

changes

...

were

...

made,

...

or

...

that

...

the
plugin

...

declined

...

to

...

run

...

altogether

...

(for

...

example,

...

because

...

the

...

environment

...


doesn't

...

match

...

the

...

plugin's

...

needs)

-

...

(1,rest

...

ignored)

...

means

...

changes

...

were

...

made

...

to

...

the

...

sys

...

object,

...

and

...

nmis
should

...

save

...

the

...

nodeinfo

...

and

...

view

...

components.

-

...

(2,list

...

of

...

error

...

messages)

...

means

...

the

...

plugin

...

failed

...

to

...

work

...

and

...

NMIS
should

...

please

...

log

...

the

...

error

...

messages.

...

no

...

nodeinfo/view

...

saving

...

will

...

be

...


performed.