| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
This was preventing the ubootenv boot order and pxe config from
being preserved.
|
|
|
|
|
|
|
|
|
|
| |
It's squashing another error that prevents ubootenv updates from
working -- boot order and pxe config aren't preserved as they
should be.
To fix this, replace UnknownBootCmdError with UbootenvError. Just
something more general to say "we can't recognize the environment".
UbootEnv can raise that instead of Exception.
|
|
|
|
| |
pyipmi v0.8.0, ipmitool 1.8.11-cx7
|
|
|
|
|
|
|
|
| |
This provides a mechanism so we can easily parallelize BMC calls
without having to manually write wrapper functions in the Node and
Fabric classes.
>>> fabric.cbmc.sel_clear()
|
|
|
|
| |
And unit tests!
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
You can now run things like:
cxmanage config pxe status
cxmanage config pxe eth1
cxmanage config pxe eth0
The command modifies the u-boot environment underneath in order
to perist the setting.
|
|
|
|
|
|
|
|
|
| |
When we load tests from modules, each testcase gets initialized,
therefore a fabric is created for every test case based on the manifest.
This caused a problem with LTP which generated ~1000 tests, thus ~1000
fabrics and finally ~1000 Internal tftp servers.
Move tftp to lazy init so we only create one when we need one, on
demand.
|
|
|
| |
Fixed set_uplink() example to be more verbose.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
| |
Oh yea .. Eclipse was kind enough to clean up some whitespace ...
|
| |
|
|
|
|
| |
Give each node a node_id.
|
|
|
|
|
| |
node.py
Cleaned up code
|
|
|
|
|
|
|
|
|
|
|
|
| |
node.py
Logs are now saved to:
~/.cxmanage/logs/<node.ip_address>/<timestamp>-fwupdate.log
Removed arguments to update_firmware() (formerly needed for the old
way of saving logs)
Removed a logger.info() stating the time (every message states the time)
fw.py
Removed unneeded arguments to the call to update_firmware()
|
|
|
|
|
|
|
|
|
|
| |
node.py
Uses loggers.FileLogger instead of FileLogger.py
Removed unneeded function _append_to_file()
Removed unneeded imports
Removed filelogger.py
Added loggers.py (copied from cx_automation)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
filelogger.py
Simple class to log messages to files
node.py
Always log messages
Use filelogger.py to write messages to file
Removed optional arguments for updating firmware (no longer needed)
fw.py
Saves firmware update logs to directories in /.cxmanage
Removed unneeded arguments
cxmanage
Removed unneeded optional arguments for fwupdate command
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
node.py
Save a log of events during a firmware update.
scripts/cxmanage.py
Added arguments to fwupdate:
--no_log (to NOT save logs of a firmware update)
By default, logs are saved
--log_directory (place to save firmware update logs)
Default directory set to "./fwupdate_logs"
fw.py
Changed the run_command in fwupdate_command to include the new arguments
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Should ensure that TFTP communication is working before we start.
We can't really test an upload, but uploads and downloads are
pretty similar anyway.
May want to add some kind of local crc32 check to verify that the
downloaded image is actually valid.
|
| |
| |
| |
| | |
We're getting proper IPMI errors now.
|
| |
| |
| |
| | |
pyipmi should raise a proper IpmiError now.
|
| |
| |
| |
| |
| | |
If there's only one partition, just treat it like any other image.
This means the boot order won't be preserved.
|
| |
| |
| |
| | |
Don't need to infer anything about the CDB's in-use state anymore.
|
| |
| |
| |
| | |
Yeah, let's just do that in pyipmi where it belongs.
|
| |
| |
| |
| | |
We expect it to raise a proper IpmiError now.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
tspackage.py
Formatted comments
removed unneeded return statement
Changed string formatting
node.py
Added comments to get_sel()
__init__.py
Changed get_components() to a global variable COMPONENTS, and
updated info.py and tspackage.py accordingly
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
coredump.py/tspackage.py
Changed coredump.py to tspackage.py ("troubleshoot package")
Removed code to check for server IP
Removed requirement to power on nodes
Uses python's tempfile module instead of trying to manually find unused
temporary filenames
No longer calls ipmitool directly, only functions in node.py are used
Removed function to get SDR (already had another function to get
sensor information)
Uses node.ip_address instead of custom function to get ip_addresses of
nodes
Removed function to delete files. Now uses python's shutil.rmtree()
Archives files using python's tarfile module instead of using subprocess.call
Archived filenames now contain the date and time they were created.
Various minor changes
scripts/cxmanage
Reflects name change (coredump to tspackage)
Removed unneeded arguments for tspackage
node.py
Added a function to get the SEL
cxmanage/__init__.py
Moved the components dictionary from cxmanage/commands/info.py to here,
so other files can access it
info.py
Now references the components dictionary from __init__.py
|
|/
|
|
|
|
|
|
| |
coredump.py
Added cxmanage command to get a lot of data and store it in a .tar
cxmanage
Added the coredump command
|
|
|
|
|
| |
Sometimes when tests power on/off systems or MC_RESET node IPs change.
We want the ability to get the new ips for the current fabric object
without a complete re-init.
|
|
|
|
|
|
|
|
| |
If the initial RRQ or WRQ packet out is dropped, tftpy seems to
break and never retries. We need to be more tolerant than that, so
just retry the transfer a couple of times.
We used to do that anyway.
|
| |
|
|
|
|
| |
This was the original intention, but somehow I missed that. Oops.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Just group the nodes and primary_nodes properties together, and
move private methods to the bottom.
|
|
|
|
|
|
|
|
| |
To align them with the method names in the Fabric class.
In general, Node methods should have "fabric" in the name if it
applies to all the nodes in the fabric, i.e. get_fabric_ipinfo
which returns IP addresses for ALL the nodes.
|
|
|
|
|
|
|
|
| |
For commands that run across all nodes, we want the interface of
Fabric and Node to be very similar.
This means Fabric.get_link_stats now takes a "link" parameter as
well, instead of returning results for all links.
|
|
|
|
| |
Need to use _run_on_all_nodes for these.
|
|
|
|
|
| |
Instead of building up the dictionaries ourselves, let's use the
Node method that already does that for us.
|
|
|
|
| |
Mostly just fixing up incorrect method names in the examples.
|