Every node was serialized in being passed to plugins. Fix this
by grouping the nodes by the handler function, and then calling
them by batch. This still serializes each plugin, but for now this should
suffice.
get_node_attributes would make a fatal mistake when more
than one node queried due to loop side effect. Also address
numerous issue with html-ification in the messaging module.
Noderange based operations are now online. Investigation required
to understand underwhelming performance (e.g. health/hardware)
and trace error when trying to show things on console-only nodes
(like power state). The html api browser handling of power/state and
similar needs a look (though json through http is fine) and confetty
client display of the data needs work still.
With the branches for node versus nodegroup and noderange a function was unwieldy.
Break it up to be more manageable. Also address a defect where client omission of traling '/'
would break nodegroup elements.
On the plugin front, add a one-off description for the 'noderange' attribute.
For the other pieces, make noderange more like any 'extensible' string value
rather than making it special.
Make expansion of groups and rejection of unrecognized elements work.
Additionally, implement dynamic groups. A group may have a 'noderange'
attribute. In this case it is considered to have 'dynamic' members. This
only has meaning in noderange expansion, not in deriving configuration data.
This does not yet add the search by attribute value capabilities and still
doesn't do the pagination or + operators.
Implement [] and - and :. Actually do better than xCAT NodeRange.pm about
multiple numbers in the non-[] sequential range case. Still need to do the things
that requiring wiring up to a config manager (the atom verification as well as
=, =~, and [0] being ~ or / for regex names).
The root cause for negative has not been determined,
however reduce the hypothetical exposure to the issue
in the hopes of filtering out extraneous problems.
confluent when we call tcgetattr() with the following:
termios.error: (25, 'Inappropriate ioctl for device')
Before calling tcgetattr, check that the file descriptor
is a tty.
The socket.SO_PEERCRED seemed to work fine for my
ppc64 RHEL system, but testing today on little-
endian SLES 12 system threw that exception. So
checking if the arch is "ppc64" on the exception
case.
After some discussion with the team, let's keep the xcat
related "glue" out of the confluent project, for now.
This will give me more time to figure out how things will
come together and integrate for xCAT3.
For xCAT2, a xCAT-confluent RPM is added to xcat-core project to
be consistent with how xCAT2 is packaged today.
Previously, any PAM result was treated as good. This isn't
actually of practical value, since we need a user object to
really do authorization. Change strategy to give pam a chance
to deny anyone, but require the user to exist in confluent
even if pam says the user is a valid one.
When doing tab completion, ignore content after the current index.
This was confusing the tab completion routine. Also silently
ignore traces by default
a confluent_xcat RPM. This holds the related pieces that xCAT requires
to use confluent and allows confluent to be standalone install.
The confluent_xcat rpm has a dependency on confluent_server.
The structure of confluent_xcat directory follows the other directories
under the confluent project. (_server,_client,_common)
If connectivity is lost in the midst of an interrogation,
relay the unreachable status to the client rather than
'Internal Error' that was occuring before.
When asked to execute a command, do not mess with the terminal
in a way that would incur SIGTTOU when run in background. This
means that a backgrounded confetty can actually exit rather
than block waiting to be run in foreground. This won't work
with running a *console* in background, but that really doesn't
make any sense.
xcathmc.sh is a xCAT console wrapper needed to be placed in the
confluent consoles plugin directory. Talking with Jarrod, it was
decided that confluent should stay stand-alone and xCAT should ship
this and related "glue" items in a separate RPM. The empty 'console'
directory should be owned by the confluent RPM
If a web application in a wider domain sets a cookie that python
doesn't like, a CookieError would be raised to ruin the whole request.
Address by subclassing SimpleCookie to catch the cookie error and
set an empty Morsel rather than fail out. This allows the errant
cookie to be ignored while still being able to check for the cookie
that we actually care about.
The change to allow configmanager to log traces
erroneously broke due to use of 'import .. as' in
circular imports. Skip 'as' and the problem does not occur.
When confetty runs in a UTF-8 terminal, things are fine. However python
assumes ascii only when piped. Catch the situation and force utf-8
encoding rather than erroring out in such a circumstance
When a change callback handler raises an exception,
log it and move on to next handler. This prevents
the handler from screwing up the caller or fellow
callback handlers. Unfortunately this means that
no one notices the issue until checking the trace
log file, but it produces more peculiar behavior
as it stands without this change.
If a session was attempted but failed before creation, a trace was thrown.
Fix this by catching the scenario and passing, since the desired effect is
already there.
Clarify that the data is in UTF-8 where applicable. It is expected
that clients are capable of handling UTF-8 for now. Additionally,
the HTML api explorer handling of numeric data is fixed.
When a log object is used as a 'dumb' file target, show the origin of the
output. The motivation here is that 'print' statements are intended to
be an unusual event that should be easily tracked down and eliminated
once their specific use has concluded.
In xcatd, running '-f' means a lot of mysterious output that is hard
to manage as they frequently print out variable contents without
searchable context. For example, if in xcatd someone randomply prints out
a varibale with a nodename, we might see a stray:
n1
With this change (together with previous changes), the same statement
results in stdout log appearing like:
Jan 19 14:20:54 File "/opt/confluent/lib/python/confluent/plugins/hardwaremanagement/ipmi.py", line 364, in _dict_sensor
print nodename: n1
A plugin is now allowed to define a collection. The sensors
hierarchy is added as the first path to allow plugin curated
collections. ipmi plugin updated to list items in those
collections
For exploring the api, a write-only attribute presents difficulty. Address this by allowing
plugins to return a '' value and have ipmi plugin return that value to enable things
like the web api explorer.