aboutsummaryrefslogtreecommitdiffstats
path: root/tests/archive_tests.py
Commit message (Collapse)AuthorAgeFilesLines
* [sosreport] Add mechanism to encrypt final archiveJake Hunsaker2018-07-121-1/+2
| | | | | | | | | | | | | | | | | | | | | Adds an option to encrypt the resulting archive that sos generates. There are two methods for doing so: --encrypt-key Uses a key-pair for asymmetric encryption --encrypt-pass Uses a password for symmetric encryption For key-pair encryption, the key-to-be-used must be imported into the root user's keyring, as gpg does not allow for the use of keyfiles. If the encryption process fails, sos will not abort as the unencrypted archive will have already been created. The assumption being that the archive is still of use and/or the user has another means of encrypting it. Resolves: #1320 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] fix add_string()/do_*_sub() regressionBryn M. Reeves2018-07-021-10/+2
| | | | | | | | | | | | | A change in the handling of add_string() operations in the archive class causes the Plugin string substitution methods to fail (since the archive was enforcing a check that the path did not already exist - for substitutions this is always the case). Maintain the check for content that is being copied into the archive anew, but make the add_string() method override this and disable the existence checks. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] use threads for xz compressionPavel Moravec2018-06-181-1/+2
| | | | | | | | | | Moving also building of the command from Archive to Plugin class. Closes: #1196 Resolves: #1338 Signed-off-by: Pavel Moravec <pmoravec@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] make FileCacheArchive methods re-entrantBryn M. Reeves2018-06-181-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since plugins are now run concurrently the Archive class must be re-entrant: different plugins may attempt to create the same paths in the archive, and since they are executing in parallel and with no locking, there exists a TOCTOU race between the use of os.path.{exists,isdir, etc.}() and the subsequent creation of a new path. Address this by implementing a simple monitor-style locking scheme for the FileCacheArchive class. A `_path_lock` member is added to the class and this must be held across any operation that modifies the namespace of the archive (including file, directory, symlink, and special node creation). Additionally, the `_check_path()` Archive method (which checks for the existence of path components up to the basename of the file, creating directories as required) is extended to also carry out a test for the existence of the path, and if the path does exist, that the object is of the expected type. A mismatch in the object type generates a ValueError with an appropriate string description of the problem. Benchmarking shows a consistent small improvement with the patch: this is a result of reduced redundant copy operations that the previous archive structure allowed (since duplicate operations are now aborted as soon as the _path_lock is acquired). Resolves: #1340 Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] Handle error when adding /dev/null as a nodeLouis Bouchard2017-01-191-0/+6
| | | | | | | | | | | | | Adding /dev/null as a node will trigger EPERM. This can happen namely when masking systemd units which symlinks to /dev/null. This fix will avoid a stacktrace and will generate a INFO message about it. Test for that situation is also included. Resolves: #893. Signed-off-by: Louis Bouchard <louis.bouchard@canonical.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] Add test to highlight py3 specific errorLouis Bouchard2015-10-151-0/+14
| | | | | | | When add_string receives output from tail() it fails in py3 since tail() returns a byte object. Mimic this behavior. Signed-off-by: Louis Bouchard <louis.bouchard@canonical.com>
* [global] Fix vim tags typo in all python source filesKamalesh Babulal2015-07-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix the syntax of the vim modeline used to enable the required editing mode in all python sources files. The desired options are: et - expand tabs (convert tab chars to spaces) ts=4 - set tabstop to 4 characters sw=4 - set shiftwidth to 4 characters Signed-off-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com> (edits for commit message, modeline compatibility & options) Signed-off-by: Bryn M. Reeves <bmr@redhat.com> --- __run__.py | 2 +- example_plugins/example.py | 2 +- setup.py | 2 +- sos/archive.py | 2 +- sos/plugins/__init__.py | 2 +- sos/plugins/abrt.py | 2 +- sos/plugins/acpid.py | 2 +- sos/plugins/anaconda.py | 2 +- sos/plugins/anacron.py | 2 +- sos/plugins/apache.py | 2 +- sos/plugins/apparmor.py | 2 +- sos/plugins/apport.py | 2 +- sos/plugins/apt.py | 2 +- sos/plugins/ata.py | 2 +- sos/plugins/auditd.py | 2 +- sos/plugins/autofs.py | 2 +- sos/plugins/azure.py | 2 +- sos/plugins/block.py | 2 +- sos/plugins/boot.py | 2 +- sos/plugins/ceph.py | 2 +- sos/plugins/cgroups.py | 2 +- sos/plugins/cluster.py | 2 +- sos/plugins/cobbler.py | 2 +- sos/plugins/corosync.py | 2 +- sos/plugins/cron.py | 2 +- sos/plugins/cs.py | 2 +- sos/plugins/ctdb.py | 2 +- sos/plugins/cups.py | 2 +- sos/plugins/dbus.py | 2 +- sos/plugins/devicemapper.py | 2 +- sos/plugins/dhcp.py | 2 +- sos/plugins/distupgrade.py | 2 +- sos/plugins/dmraid.py | 2 +- sos/plugins/docker.py | 2 +- sos/plugins/dovecot.py | 2 +- sos/plugins/dpkg.py | 2 +- sos/plugins/ds.py | 2 +- sos/plugins/fcoe.py | 2 +- sos/plugins/filesys.py | 2 +- sos/plugins/firewalld.py | 2 +- sos/plugins/foreman.py | 2 +- sos/plugins/gdm.py | 2 +- sos/plugins/general.py | 2 +- sos/plugins/gluster.py | 2 +- sos/plugins/grub.py | 2 +- sos/plugins/grub2.py | 2 +- sos/plugins/haproxy.py | 2 +- sos/plugins/hardware.py | 2 +- sos/plugins/hpasm.py | 2 +- sos/plugins/hts.py | 2 +- sos/plugins/i18n.py | 2 +- sos/plugins/infiniband.py | 2 +- sos/plugins/ipa.py | 2 +- sos/plugins/ipsec.py | 2 +- sos/plugins/ipvs.py | 2 +- sos/plugins/iscsi.py | 2 +- sos/plugins/iscsitarget.py | 2 +- sos/plugins/java.py | 2 +- sos/plugins/juju.py | 2 +- sos/plugins/kdump.py | 2 +- sos/plugins/keepalived.py | 2 +- sos/plugins/kernel.py | 2 +- sos/plugins/kernelrt.py | 2 +- sos/plugins/keyutils.py | 2 +- sos/plugins/kpatch.py | 2 +- sos/plugins/krb5.py | 2 +- sos/plugins/kvm.py | 2 +- sos/plugins/landscape.py | 2 +- sos/plugins/ldap.py | 2 +- sos/plugins/libraries.py | 2 +- sos/plugins/libvirt.py | 2 +- sos/plugins/lightdm.py | 2 +- sos/plugins/lilo.py | 2 +- sos/plugins/logrotate.py | 2 +- sos/plugins/logs.py | 2 +- sos/plugins/lsbrelease.py | 2 +- sos/plugins/lvm2.py | 2 +- sos/plugins/maas.py | 2 +- sos/plugins/manageiq.py | 2 +- sos/plugins/md.py | 2 +- sos/plugins/megacli.py | 2 +- sos/plugins/memory.py | 2 +- sos/plugins/mongodb.py | 2 +- sos/plugins/mpt.py | 2 +- sos/plugins/mrggrid.py | 2 +- sos/plugins/mrgmessg.py | 2 +- sos/plugins/multipath.py | 2 +- sos/plugins/mysql.py | 2 +- sos/plugins/named.py | 2 +- sos/plugins/navicli.py | 2 +- sos/plugins/networking.py | 2 +- sos/plugins/nfs.py | 2 +- sos/plugins/nfsserver.py | 2 +- sos/plugins/nis.py | 2 +- sos/plugins/nscd.py | 2 +- sos/plugins/ntp.py | 2 +- sos/plugins/numa.py | 2 +- sos/plugins/oddjob.py | 2 +- sos/plugins/openhpi.py | 2 +- sos/plugins/openshift.py | 2 +- sos/plugins/openssl.py | 2 +- sos/plugins/openstack_ceilometer.py | 2 +- sos/plugins/openstack_cinder.py | 2 +- sos/plugins/openstack_glance.py | 2 +- sos/plugins/openstack_heat.py | 2 +- sos/plugins/openstack_horizon.py | 2 +- sos/plugins/openstack_keystone.py | 2 +- sos/plugins/openstack_neutron.py | 2 +- sos/plugins/openstack_nova.py | 2 +- sos/plugins/openstack_swift.py | 2 +- sos/plugins/openstack_trove.py | 2 +- sos/plugins/openswan.py | 2 +- sos/plugins/openvswitch.py | 2 +- sos/plugins/pam.py | 2 +- sos/plugins/pci.py | 2 +- sos/plugins/pcp.py | 2 +- sos/plugins/postfix.py | 2 +- sos/plugins/postgresql.py | 2 +- sos/plugins/powerpath.py | 2 +- sos/plugins/powerpc.py | 2 +- sos/plugins/ppp.py | 2 +- sos/plugins/procenv.py | 2 +- sos/plugins/process.py | 2 +- sos/plugins/processor.py | 2 +- sos/plugins/psacct.py | 2 +- sos/plugins/pxe.py | 2 +- sos/plugins/python.py | 2 +- sos/plugins/qpid.py | 2 +- sos/plugins/quagga.py | 2 +- sos/plugins/rabbitmq.py | 2 +- sos/plugins/radius.py | 2 +- sos/plugins/rhui.py | 2 +- sos/plugins/rpm.py | 2 +- sos/plugins/s390.py | 2 +- sos/plugins/samba.py | 2 +- sos/plugins/sanlock.py | 2 +- sos/plugins/sar.py | 2 +- sos/plugins/satellite.py | 2 +- sos/plugins/scsi.py | 2 +- sos/plugins/selinux.py | 2 +- sos/plugins/sendmail.py | 2 +- sos/plugins/smartcard.py | 2 +- sos/plugins/snmp.py | 2 +- sos/plugins/soundcard.py | 2 +- sos/plugins/squid.py | 2 +- sos/plugins/ssh.py | 2 +- sos/plugins/ssmtp.py | 2 +- sos/plugins/sssd.py | 2 +- sos/plugins/startup.py | 2 +- sos/plugins/sunrpc.py | 2 +- sos/plugins/symcli.py | 2 +- sos/plugins/system.py | 2 +- sos/plugins/systemd.py | 2 +- sos/plugins/systemtap.py | 2 +- sos/plugins/sysvipc.py | 2 +- sos/plugins/targetcli.py | 2 +- sos/plugins/teamd.py | 2 +- sos/plugins/tftpserver.py | 2 +- sos/plugins/tomcat.py | 2 +- sos/plugins/tuned.py | 2 +- sos/plugins/udev.py | 2 +- sos/plugins/unity.py | 2 +- sos/plugins/upstart.py | 2 +- sos/plugins/usb.py | 2 +- sos/plugins/veritas.py | 2 +- sos/plugins/vmware.py | 2 +- sos/plugins/vsftpd.py | 2 +- sos/plugins/x11.py | 2 +- sos/plugins/xen.py | 2 +- sos/plugins/xfs.py | 2 +- sos/plugins/xinetd.py | 2 +- sos/plugins/yum.py | 2 +- sos/policies/__init__.py | 2 +- sos/policies/debian.py | 2 +- sos/policies/osx.py | 2 +- sos/policies/redhat.py | 2 +- sos/policies/ubuntu.py | 2 +- sos/reporting.py | 2 +- sos/sosreport.py | 2 +- sos/utilities.py | 2 +- tests/archive_tests.py | 2 +- tests/importer_tests.py | 2 +- tests/option_tests.py | 2 +- tests/plugin_tests.py | 2 +- tests/policy_tests.py | 2 +- tests/report_tests.py | 2 +- tests/sosreport_pexpect.py | 2 +- tests/test_exe.py | 2 +- tests/utilities_tests.py | 2 +- 189 files changed, 189 insertions(+), 189 deletions(-)
* [archive] remove ZipArchiveBryn M. Reeves2014-12-091-82/+1
| | | | | | | | Remove the ZipArchive class and associated test code. Fixes #322. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Syntax error.. I blame emacs.Adam Stokes2014-04-041-1/+1
| | | | Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
* Properly state unicode literal in Python 3.2Adam Stokes2014-04-041-1/+1
| | | | | | | The 'u' prefix wasn't reintroduced back into Python 3 until version 3.3. Use six here to accomodate for that. Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
* Add vim tags to all python source filesBryn M. Reeves2014-03-261-0/+2
| | | | | | Fixes Issue #243. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* Python 3 portAdam Stokes2013-10-301-2/+4
| | | | | | | | | | | | This includes a necessary dependency on python-six for its compability layer since we are wanting to continue support for both Python 2.7.x and Python 3.x. In addition, this will allow us to effectively phase out Python 2 support when/if the time arises that all interested distributions have done away with Python 2. This port passes all unittests for both python 2.7.x and python 3.3.x Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
* Correct archive unittests and pep8 conformity in archive classAdam Stokes2013-07-251-27/+35
| | | | Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
* Disable archive recursion tests for TarFileArchiveBryn M. Reeves2012-12-181-10/+14
| | | | | | The TarFileArchive class currently doesn't allow recursive directory addition using the add_file() interface - disable those tests for now.
* Fix import statement in archives_test.pyBryn M. Reeves2012-12-181-1/+1
|
* adding more gathering for as7 and fixing an error where trying to add a ↵Jesse Jaggars2012-04-051-0/+6
| | | | unicode filename to a zipfile would fail
* Refactoring PackageManagers and ArchivesJesse Jaggars2012-03-051-1/+25
| | | | | | | Pulled up PackageManager implementation to simplify subclass responsibilities Moved compress method to Archive classes Re-organized utilities.py Added tests to exercise more utilities methods
* Removing many unused bitsJesse Jaggars2012-02-291-12/+12
|
* adding more tests and fixing an error with tar archivesJesse Jaggars2012-02-231-0/+0
|
* Major updates to most of SoSReportJesse Jaggars2011-12-141-0/+130
Code reorganization Cross platform support for Windows, OS X and Linux Dynamically loaded policies Support for loading plugins from multiple locations via __path__ modification of sos.plugins Support for running via Jython Support for executing from a jarfile Support for json based reporting infrastructure - Previous reporting methods still exist Support for other checksum algorithms (determined by policy) Support for other compression algorithms (determined by policy) New plugin API for writing arbitrary information in a new file inside the report archive. New plugin API for modifying files that have been added to the archive. Added API for global plugin options - external interface is unavailable at this time Many small bugfixes