summaryrefslogtreecommitdiff
path: root/ironic_python_agent/utils.py
Commit message (Collapse)AuthorAgeFilesLines
* When ouputting to /dev/null should open in write modeJohn L. Villalovos2018-02-061-1/+1
| | | | | | | | | | | | | Even though it was working opening the file in 'read' mode, it really should be opened in 'write' mode, since we are redirecting the output to the file. Interestingly it does fail in 'read' mode if the command is: echo something But passes in 'write' mode. Change-Id: Ic67091881e0be377e527b78d270ab48962881ae0
* Fix logs encoding in py3zackchen2017-03-141-1/+1
| | | | | | | | | Make sure that logs are encoded as text (not byte strings) in python3 to allow theirs serialization in JSON. Closes-Bug: #1668533 Change-Id: I3d0d87ca766146457d905f89c26331a415bd54f8
* Configure and use SSL-related requests optionsPavlo Shchelokovskyy2017-01-131-0/+17
| | | | | | | | | | | | | | | | | This patch adds standard SSL options to IPA config and makes use of them when making HTTP requests. For now, a single set of certificates is used when needed. In the future configuration can be expanded to allow per-service certificates. Besides, the 'insecure' option (defaults to False) can be overridden through kernel command line parameter 'ipa-insecure'. This will allow running IPA in CI-like environments with self-signed SSL certificates. Change-Id: I259d9b3caa9ba1dc3d7382f375b8e086a5348d80 Closes-Bug: #1642515
* Use oslo_serialization.base64 to follow OpenStack Python3Luong Anh Tuan2016-12-161-2/+2
| | | | | | | | | | | | | | | | This patch replaces python standard base64 library call to oslo_serialization.base64 to follow OpenStack Python3 porting standard [1]. Use base64 encoding takes 8-bit binary byte data and encodes it. On Python3, A string is a sequence of Unicode characters thus base64 has no idea what to do with Unicode data, it's not 8-bit[2]. We use oslo_serialization.base64 for both python2 and python3. [1] https://wiki.openstack.org/wiki/Python3 [2] http://stackoverflow.com/questions/8908287/base64-encoding-in-python-3 Change-Id: I1dafe878a71f37d223eaf58ea8e2e8c6b4422a14
* Fix two typos, "messsage" and "containg"Nam Nguyen Hoai2016-11-221-1/+1
| | | | | | | | This patch set updated two wrong words: + In error.py file, it should be changed from "messsage" to "message" + In utils.py file, it should be changed from "containg" to "contaning" Change-Id: I5ad121ec58ccc6e5f3cc499eca50d16e691f217e
* Use ironic_lib's execute()Ruby Loo2016-07-271-18/+4
| | | | | | | Use ironic_lib's execute() instead of copying that code. Change-Id: If40c2da5423d0f90cc6661f8cdf2bec9567e1f7d Partial-Bug: #1587199
* Replace the ps options when collecting logsLucas Alvares Gomes2016-07-071-1/+1
| | | | | | | | | This patch is replacing the "-ax" options of the ps command when collecting the logs to "au". The "-x" option is not supported by the BusyBox in the TinyIPA ramdisk. Closes-Bug: #1599839 Change-Id: Id0c86db6aa16c63550890e1cd488994025f5dd68
* Add a log extensionLucas Alvares Gomes2016-06-281-0/+125
| | | | | | | | | | | | | | | | | | | The log extension is responsible for retrieving logs from the system, if journalctl is present the logs will come from it, otherwise we fallback to getting the logs from the /var/log directory + dmesg logs. In the coreos ramdisk, we need to bind mount /run/log in the container so the IPA service can have access to the journal. For the tinyIPA ramdisk, the logs from IPA are now being redirected to /var/logs/ironic-python-agent.log instead of only going to the default stdout. Inspector now shares the same method of collecting logs, extending its capabilities for non-systemd systems. Partial-Bug: #1587143 Change-Id: Ie507e2e5c58cffa255bbfb2fa5ffb95cb98ed8c4
* lldp-timeout kernel parameter missing ipa- prefixYosef Hoffman2016-06-031-0/+7
| | | | | | | | | | | | Every other Ironic python agent kernel parameter is prefixed with "ipa-". This patch allows users to use the old "lldp-timeout" parameter or the new "ipa-lldp-timeout" parameter. Warning message is logged if "lldp-timeout" parameter is used. (Also fixed typo while I'm at it.) Change-Id: Icc05ead31506628e4926be6549916a19cad48db3 Closes-Bug: #1588325
* Remove unused SUPPORTED_ROOT_DEVICE_HINTSRuby Loo2016-05-301-2/+0
| | | | | | | | utils.SUPPORTED_ROOT_DEVICE_HINTS is no longer being used so delete it. (The method that used it was removed in 33535cd572b90a817b9c96b42a0d2fe54751351d). Change-Id: Ibb675d4496d7814778f3bab9c161734013479116
* Get root device hints from the node objectLucas Alvares Gomes2016-05-261-38/+0
| | | | | | | | | | | | | | | | | | | | | | | In order to support a more complex syntax for root device hints (e.g operators: greater than, less than, in, etc...) we need to stop relying on the kernel command line for passing the root device hints. This patch changes this approach by getting the root device hints from a cached node object that was set in the hardware module. Two new functions: "cache_node" and "get_cached_node" were added to the hardware module. The idea is to facilitate the access to a node object representation from the hardware extension methods without changing method signatures, which would break compatibility with out-of-tree hardware managers. Note that the new "get_cached_node" is just a guard function to facilitate the tests for the code. The function parse_root_device_hints() and its tests were removed since it's not used/needed anymore. Partial-Bug: #1561137 Change-Id: I830fe7da1a59b46e348213b6f451c2ee55f6008c
* Stop trying to log stdout when fetching logs during inspectionDmitry Tantsur2016-03-081-1/+5
| | | | | | | | | | | | Logging the whole journalctl output is not the best idea. Fortunately, it does not work right now and fails with a traceback :) This change adds a new log_stdout argument to utils.execute() and uses it in the "logs" inspection collector. Also do not log the logs while logging the collected data. Change-Id: Ibc726ac2c4f5eb06c73ac4765bb400077b84a6cc
* Fix vfd mount for capitalized device nameNaohiro Tamura2016-02-081-2/+7
| | | | | | | | | | | | This patch enables virtual media deploy even if the expected virtual floppy device name "/dev/disk/by-label/ir-vfd-dev" is capitalized to "/dev/disk/by-label/IR-VFD-DEV". This change is necessary because some bare metal hardware such as FUJITSU RX1330 series create the capitalized virtual floppy device name. Change-Id: I436b3f9524a83814e082f8dd421df3e53b33f792 Closes-Bug: #1541167
* Update typosSwapnil Kulkarni (coolsvap)2016-01-131-1/+1
| | | | Change-Id: Ia0992ebc7a9355d5ea99d0cde28e03fc0d2a1346
* Add param docstring into the normalize funcNaohiro Tamura2015-10-141-0/+1
| | | | | | | | This patch adds a missing param docstring into the normalize function in util.py. Change-Id: I91ecc0970fc386163657ab521d8cdd898694a426 Partial-bug: 1367915
* Merge "Ensure all methods in utils.py have docstrings"Jenkins2015-10-131-5/+31
|\
| * Ensure all methods in utils.py have docstringsJay Faulkner2015-10-091-5/+31
| | | | | | | | | | | | | | | | Previous some of these methods were not well documented. Hopefully they now are. Change-Id: If73987a2dd234b71a1c2af9b764becc34aee4496 Partial-bug: 1367915
* | Enforce all flake8 rules except E129John L. Villalovos2015-10-021-2/+2
| | | | | | | | | | | | | | | | | | Bring ironic-python-agent in line with the other ironic projects. Stop ignoring all E12* errors except E129 Stop ignoring E711 Change-Id: Icb9bc198473d1b5e807c20869eb2af7f4d7ac360
* | Add support for inspection using ironic-inspectorDmitry Tantsur2015-09-071-0/+70
|/ | | | | | | | | | | | | Adds a new module ironic_python_agent.inspector and new entry point for extensions, which will allow vendor-specific inspection. Inspection is run on service start up just before the lookup. Due to this early start, and due to the fact we don't even know MAC address of nodes on inspection (to say nothing about IP addresses), exception handling is a bit different from other agent features: we try hard not to error out until we send at least something to inspector. Change-Id: I00932463d41819fd0a050782e2c88eddf6fc08c6
* Remove ordereddict as 2.6 is no longer supportedJay Faulkner2015-09-031-10/+0
| | | | | | | | ordereddict, and a related workaround method, were removed as we no longer support python 2.6. Collections contains ordereddict on newer python versions. Change-Id: I48cc55a5c56fbc1f71442fc858eb4905f0213988
* Extend hardware manager with data needed for inspectorDmitry Tantsur2015-08-211-0/+8
| | | | | | | | | | | | | | | | | * Added NetworkInterface.ip4_address * Added HardwareManager.get_bmc_address() * Added Memory.physical_mb This is total memory as reported by dmidecode, and yes, it's different from total, as it includes kernel reserved space. * Added CPU.architecture As a side effect, get_cpus was switched to lscpu. Also fixes problem when get_cpus reported the current frequency instead of maximum one. Change-Id: I4080d4d551eb0bb995a94ef9a300351910c09fb9
* Remove openstack.common packageSergey Vilgelm2015-08-031-5/+3
| | | | | | | ironic_python_agent contains unused oslo-incubator modules, so let's remove them. Change-Id: I2b8f84bf8a68d155fe123487f9b5624bb94e806b
* Add Python3 supportLucas Alvares Gomes2015-07-151-1/+1
| | | | | | | | | This patch add Python 3 support for IPA. We still need to enable it on gate to avoid code breaking the support from sneaking in. Partial-Bug: #1474896 Depends-On: I5a774eaa8d978f4d50faca4dc1b03a87fb194ce2 Change-Id: If47c0797b63d2914b3c47aba62ec5201301b6c33
* Update hacking and fix hacking violationsJim Rollenhagen2015-06-031-2/+1
| | | | | | | | | | | | | | | This does a few things: * Update hacking to the version in global-requirements. Old hacking was installing a version of pbr that was breaking other packages. * Fix all the hacking/pep8 rules that updating hacking raised. * Do some general docstring cleanup, while already in there cleaning up a bunch of docstrings due to H405 violations. Change-Id: I1fc1e59d4c3d7b14631f8b576e3f3854bc452188 Closes-Bug: #1461717
* Use mkdtemp for mounting virtual media deviceRamakrishnan G2015-05-061-15/+22
| | | | | | | | | | | When using virtual media, restarting ironic-python-agent leads to errors like 'File exists'. This is because we use static directory (/vmedia_mnt) as mount path and we don't remove it. It's better to use mkdtemp to create a temporary directory for mounting virtual media device. Change-Id: Ibb4c3d3a2024cf51ef198bd396fb9e86ad72a320
* Use oslo_log libGhe Rivero2015-03-241-1/+1
| | | | | | | Module 'log' from oslo-incubator was removed after release of oslo_log library. Change-Id: Ia00e26071fc0cab4fd3f3334ca94860bc7b1c75c
* Merge "Use labels for virtual media dev in agent ramdisk"Jenkins2015-03-171-5/+12
|\
| * Use labels for virtual media dev in agent ramdiskRamakrishnan G2015-03-121-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | This commit changes agent deploy ramdisk to find out the virtual media device by using labels instead of looking at the model of block device. This helps in finding out the device irrespective of the hardware. Corresponding Ironic change is If5b78d9af7048f2631d050ee5ce01ab7a67e2354. Closes-Bug: 1429340 Change-Id: Ib6cc226dc4fb341d913f707737493c31a3f77152
* | Cache agent parameters for later invocationsRamakrishnan G2015-03-161-7/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | When parameters are passed to agent through virtual media, the device might be connected only for a short while (dur to swift temp-url expiration, ironic removing the floppy image, etc). This change will enable agent to cache the parameters and use it for any time later on. After caching, the agent parameters need not be re-read from /proc/cmdline or from the virtual media device. Implements: blueprint ipa-as-default-ramdisk Change-Id: Ia8c7020c91c987ec884c5640421f0583dbf1c3d9
* | Add support for root device hintsLucas Alvares Gomes2015-03-131-0/+49
|/ | | | | | | | | | | This patch add support for root device hints on IPA. Instead of picking the first disk >= 4G, if the hints are specified IPA will look at it to decide which device it should pick for the deployment. The initial patch supports the following hints: Size, model, WWN, serial, vendor. Implements: blueprint ipa-as-default-ramdisk Implements: blueprint root-device-hints Change-Id: I2b00b3fb3b61001033750dd8951f9353d6f2e361
* Move _get_agent_params() to a common placeLucas Alvares Gomes2015-03-101-0/+101
| | | | | | | | | The function _get_agent_params() parse the parameters passed to the agent via kernel cmdline or vmedia. Other parts of the code needs to access these parameters as well, so this patch is moving _get_agent_params() and the related functions to a common place (utils.py). Change-Id: I860f84d1d13511fff56d4aa56358ee597a9760d5
* Use oslo.utils and oslo.concurrencyOleksii Chuprykov2014-12-091-2/+3
| | | | | | | | | | Update openstack/common files and use oslo.utils, oslo.concurrency instead of modules from oslo-incubator. Additionally, sort and set requirements.txt to correct versions in openstack/requirements in order to ensure pep8 passes. Change-Id: I15f88a31a4c889bba27cd0cd1c7fc481c0c0b51e
* Resolve circular import, introduce ExecuteCommandMixinAlexander Gordeev2014-04-141-11/+0
| | | | | | | | | | | | Adding new methods to utils won't work as the circular import appears between errors.py and utils.py. Introduce ExecuteCommandMixin and use it for IronicPythonAgent and FlowExtension (in future patch). Also add tests for its. Change-Id: Id95b31349292a7967d2ee66ec82c1662d8e5de94
* Use # instead of """ for copyright blocksJim Rollenhagen2014-04-101-15/+13
| | | | | | | Reformats copyright messages to be comments rather than docstring-style blocks. Change-Id: I4d863f53b67bb49d03bda0952b9e6179b6d23c59
* Merge "Move split_command to utils"Jenkins2014-04-071-0/+11
|\
| * Move split_command to utilsAlexander Gordeev2014-04-071-0/+11
| | | | | | | | | | | | | | This patch moves _split_command from IronicPythoAgent class to utils module. Also fixes import looping. Change-Id: Ibf2b0b3885286b9ad78db64cf9e195de4ad627ad
* | Compatibility fixes for Python 3.3Jay Faulkner2014-04-071-1/+1
|/ | | | | | | | | | | | | 1) Added a py33 environment to tox 2) Updated tests to mock the correctly named builtins.open based on python version 3) Other minor compatibility fixes Tests for Python 3.3 will not pass due to this bug: https://github.com/eventlet/eventlet/issues/83 among possibly others in eventlet. Change-Id: Ie4b512a926fa690ee77a71a89851c871ea1f6be0
* Added execute utilVladimir Kozhukalov2014-04-041-0/+17
| | | | | | | | | It is needed to run OS commands. It uses oslo processutils. It is just a copy of the same method in openstack/ironic except using rootwrap was removed. Change-Id: I2efede22b1fa25febe91879c0fefcdfc7f3d1dd5
* Renaming to IPAJosh Gachnang2014-03-191-0/+25