diff options
author | CoprDistGit <infra@openeuler.org> | 2023-04-11 16:42:51 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-04-11 16:42:51 +0000 |
commit | 01733d75a0c2054bd92ef84cecb5bb9ee975cc2c (patch) | |
tree | 0abc122d15414944ef306022bae1c8cb5be8664b | |
parent | 5fba456e0531b02d479587c2f662122b0d95cd1e (diff) |
automatic import of python-py-lspci
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-py-lspci.spec | 385 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 387 insertions, 0 deletions
@@ -0,0 +1 @@ +/py-lspci-0.0.9.tar.gz diff --git a/python-py-lspci.spec b/python-py-lspci.spec new file mode 100644 index 0000000..3c6682b --- /dev/null +++ b/python-py-lspci.spec @@ -0,0 +1,385 @@ +%global _empty_manifest_terminate_build 0 +Name: python-py-lspci +Version: 0.0.9 +Release: 1 +Summary: Parser for lspci output on remote or local machines +License: MIT License +URL: https://github.com/YADRO-KNS/py-lspci +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/4c/e2/8ac8c2abf14d305f7629341758f4e49869ef6f2b7f1628cf24a3770ce3fc/py-lspci-0.0.9.tar.gz +BuildArch: noarch + +Requires: python3-Fabric + +%description +py-lspci – parser for lspci output on remote or local UNIX machines. +This package provides convenient interface to interact with lspci output in form of Python objects. +## Getting Started +### Prerequisites +py-lspci requires python 3.6 or newer versions to run. +Also targets that you could interact with py-lspci must have [pciutils](http://mj.ucw.cz/sw/pciutils/) installed +on them. +### Installing +Cloning project from git repository +```bash +git clone https://github.com/YADRO-KNS/py-lspci.git +``` +Installing from PyPi +```bash +pip3 install py-lspci +``` +## Examples +### Connection +First we have to establish connection to our target as user with sudo privileges: +```python +import pylspci +scanner = pylspci.ScannerPCI(ip='192.168.1.1', username='admin', password='pa$$w0rd') +``` +In cases if we targeting local machine we need to provide user password if user isn't root: +```python +import pylspci +scanner = pylspci.ScannerPCI(ip='127.0.0.1', password='pa$$w0rd') +``` +### Select +With *ScannerPCI* object now we can write requests to get data from lspci output, main tool to do that is +**select** method, that will return *PCISelect* iterator object. +``` +>>> scanner.select() +<pylspci.pci_scanner.PCISelect object at 0x7fa1dcda3940> +``` +Select will return all PCI devices that matches select request. +``` +>>> scanner.select().count() +22 +>>> scanner.select(pci_address='0000:00:00.0').count() +1 +``` +For broad select requests you could use asterisk: +``` +>>> scanner.select(type='Bridge').count() +0 +>>> scanner.select(type='*Bridge').count() +10 +``` +Use multiple keyword arguments to specify search. +You could search by any attributes or properties of *PCIDevice* class.: +``` +>>> scanner.select(type='*Bridge', is_upstream=True).count() +1 +``` +With *PCISelect* object you could loop over PCI devices that matches search parameters: +``` +>>> for device in scanner.select(is_downstream=True): +0000:08:00.0 PCI bridge Intel Corporation JHL6240 Thunderbolt 3 Bridge [x4/x4][2.5GT/s/2.5GT/s] +0000:08:01.0 PCI bridge Intel Corporation JHL6240 Thunderbolt 3 Bridge [x4/x4][2.5GT/s/2.5GT/s] +0000:08:02.0 PCI bridge Intel Corporation JHL6240 Thunderbolt 3 Bridge [x4/x4][2.5GT/s/2.5GT/s] +``` +Also you can chain your select requests: +``` +>>> scanner.select(type='PCI bridge').count() +8 +>>> scanner.select(type='PCI bridge').select(is_upstream=True).count() +1 +``` +### Get +Another search method is **get**. Basically it is the same select that will return first matching object + instead of list of objects or will raise exception in case if there was no matches. +``` +>>> print(scanner.get(type='*Host')) +0000:07:00.0 PCI bridge Intel Corporation [x2/x2][8GT/s/8GT/s] +>>> print(scanner.get(type='*Host', is_upstream=True)) +Traceback (most recent call last): + File "<input>", line 1, in <module> + File "/home/sergey/PycharmProjects/py-lspci/pylspci/pci_scanner.py", line 98, in get + if parent.is_host_bridge: +pylspci.pci_scanner.DoesNotExist: Unable to find PCI Device matching: {'type': '*Host', 'is_upstream': True} +``` +### Get Connected +Another tool is **get_connected** method of Scanner, that returns *PCISelect* with all devices connected to passed device. +For Host Bridge it will return all devices in Root Complex. For Upstream of PCI Bridge - all Downstreams. +For Downstream or Root Ports - all connected Upstreams or Endpoints. End for Endpoints it will return empty list. +``` +>>> scanner.get_connected(scanner.get(type='*Host')).count() +14 +``` +py-lspci uses cached value of lspci output, in case if you need to refresh that data, use *force_rescan* argument, +for any of mentioned methods. +``` +>>> scanner.select(force_rescan=True) +``` +### PCI rescan procedure +Last but not least method of *ScannerPCI* is **pci_rescan** that causes full rescan of PCI bus on target machine. +Be careful with this one, because not all distros support proper PCI rescan. +## Versioning +We use [SemVer](http://semver.org/) for versioning. +## Authors +* **[Sergey Parshin](https://github.com/shooshp)** +See also the list of [contributors](https://github.com/YADRO-KNS/py-lspci/graphs/contributors) who participated in this project. +## License +The code is available as open source under the terms of the [MIT License](LICENSE). + +%package -n python3-py-lspci +Summary: Parser for lspci output on remote or local machines +Provides: python-py-lspci +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-py-lspci +py-lspci – parser for lspci output on remote or local UNIX machines. +This package provides convenient interface to interact with lspci output in form of Python objects. +## Getting Started +### Prerequisites +py-lspci requires python 3.6 or newer versions to run. +Also targets that you could interact with py-lspci must have [pciutils](http://mj.ucw.cz/sw/pciutils/) installed +on them. +### Installing +Cloning project from git repository +```bash +git clone https://github.com/YADRO-KNS/py-lspci.git +``` +Installing from PyPi +```bash +pip3 install py-lspci +``` +## Examples +### Connection +First we have to establish connection to our target as user with sudo privileges: +```python +import pylspci +scanner = pylspci.ScannerPCI(ip='192.168.1.1', username='admin', password='pa$$w0rd') +``` +In cases if we targeting local machine we need to provide user password if user isn't root: +```python +import pylspci +scanner = pylspci.ScannerPCI(ip='127.0.0.1', password='pa$$w0rd') +``` +### Select +With *ScannerPCI* object now we can write requests to get data from lspci output, main tool to do that is +**select** method, that will return *PCISelect* iterator object. +``` +>>> scanner.select() +<pylspci.pci_scanner.PCISelect object at 0x7fa1dcda3940> +``` +Select will return all PCI devices that matches select request. +``` +>>> scanner.select().count() +22 +>>> scanner.select(pci_address='0000:00:00.0').count() +1 +``` +For broad select requests you could use asterisk: +``` +>>> scanner.select(type='Bridge').count() +0 +>>> scanner.select(type='*Bridge').count() +10 +``` +Use multiple keyword arguments to specify search. +You could search by any attributes or properties of *PCIDevice* class.: +``` +>>> scanner.select(type='*Bridge', is_upstream=True).count() +1 +``` +With *PCISelect* object you could loop over PCI devices that matches search parameters: +``` +>>> for device in scanner.select(is_downstream=True): +0000:08:00.0 PCI bridge Intel Corporation JHL6240 Thunderbolt 3 Bridge [x4/x4][2.5GT/s/2.5GT/s] +0000:08:01.0 PCI bridge Intel Corporation JHL6240 Thunderbolt 3 Bridge [x4/x4][2.5GT/s/2.5GT/s] +0000:08:02.0 PCI bridge Intel Corporation JHL6240 Thunderbolt 3 Bridge [x4/x4][2.5GT/s/2.5GT/s] +``` +Also you can chain your select requests: +``` +>>> scanner.select(type='PCI bridge').count() +8 +>>> scanner.select(type='PCI bridge').select(is_upstream=True).count() +1 +``` +### Get +Another search method is **get**. Basically it is the same select that will return first matching object + instead of list of objects or will raise exception in case if there was no matches. +``` +>>> print(scanner.get(type='*Host')) +0000:07:00.0 PCI bridge Intel Corporation [x2/x2][8GT/s/8GT/s] +>>> print(scanner.get(type='*Host', is_upstream=True)) +Traceback (most recent call last): + File "<input>", line 1, in <module> + File "/home/sergey/PycharmProjects/py-lspci/pylspci/pci_scanner.py", line 98, in get + if parent.is_host_bridge: +pylspci.pci_scanner.DoesNotExist: Unable to find PCI Device matching: {'type': '*Host', 'is_upstream': True} +``` +### Get Connected +Another tool is **get_connected** method of Scanner, that returns *PCISelect* with all devices connected to passed device. +For Host Bridge it will return all devices in Root Complex. For Upstream of PCI Bridge - all Downstreams. +For Downstream or Root Ports - all connected Upstreams or Endpoints. End for Endpoints it will return empty list. +``` +>>> scanner.get_connected(scanner.get(type='*Host')).count() +14 +``` +py-lspci uses cached value of lspci output, in case if you need to refresh that data, use *force_rescan* argument, +for any of mentioned methods. +``` +>>> scanner.select(force_rescan=True) +``` +### PCI rescan procedure +Last but not least method of *ScannerPCI* is **pci_rescan** that causes full rescan of PCI bus on target machine. +Be careful with this one, because not all distros support proper PCI rescan. +## Versioning +We use [SemVer](http://semver.org/) for versioning. +## Authors +* **[Sergey Parshin](https://github.com/shooshp)** +See also the list of [contributors](https://github.com/YADRO-KNS/py-lspci/graphs/contributors) who participated in this project. +## License +The code is available as open source under the terms of the [MIT License](LICENSE). + +%package help +Summary: Development documents and examples for py-lspci +Provides: python3-py-lspci-doc +%description help +py-lspci – parser for lspci output on remote or local UNIX machines. +This package provides convenient interface to interact with lspci output in form of Python objects. +## Getting Started +### Prerequisites +py-lspci requires python 3.6 or newer versions to run. +Also targets that you could interact with py-lspci must have [pciutils](http://mj.ucw.cz/sw/pciutils/) installed +on them. +### Installing +Cloning project from git repository +```bash +git clone https://github.com/YADRO-KNS/py-lspci.git +``` +Installing from PyPi +```bash +pip3 install py-lspci +``` +## Examples +### Connection +First we have to establish connection to our target as user with sudo privileges: +```python +import pylspci +scanner = pylspci.ScannerPCI(ip='192.168.1.1', username='admin', password='pa$$w0rd') +``` +In cases if we targeting local machine we need to provide user password if user isn't root: +```python +import pylspci +scanner = pylspci.ScannerPCI(ip='127.0.0.1', password='pa$$w0rd') +``` +### Select +With *ScannerPCI* object now we can write requests to get data from lspci output, main tool to do that is +**select** method, that will return *PCISelect* iterator object. +``` +>>> scanner.select() +<pylspci.pci_scanner.PCISelect object at 0x7fa1dcda3940> +``` +Select will return all PCI devices that matches select request. +``` +>>> scanner.select().count() +22 +>>> scanner.select(pci_address='0000:00:00.0').count() +1 +``` +For broad select requests you could use asterisk: +``` +>>> scanner.select(type='Bridge').count() +0 +>>> scanner.select(type='*Bridge').count() +10 +``` +Use multiple keyword arguments to specify search. +You could search by any attributes or properties of *PCIDevice* class.: +``` +>>> scanner.select(type='*Bridge', is_upstream=True).count() +1 +``` +With *PCISelect* object you could loop over PCI devices that matches search parameters: +``` +>>> for device in scanner.select(is_downstream=True): +0000:08:00.0 PCI bridge Intel Corporation JHL6240 Thunderbolt 3 Bridge [x4/x4][2.5GT/s/2.5GT/s] +0000:08:01.0 PCI bridge Intel Corporation JHL6240 Thunderbolt 3 Bridge [x4/x4][2.5GT/s/2.5GT/s] +0000:08:02.0 PCI bridge Intel Corporation JHL6240 Thunderbolt 3 Bridge [x4/x4][2.5GT/s/2.5GT/s] +``` +Also you can chain your select requests: +``` +>>> scanner.select(type='PCI bridge').count() +8 +>>> scanner.select(type='PCI bridge').select(is_upstream=True).count() +1 +``` +### Get +Another search method is **get**. Basically it is the same select that will return first matching object + instead of list of objects or will raise exception in case if there was no matches. +``` +>>> print(scanner.get(type='*Host')) +0000:07:00.0 PCI bridge Intel Corporation [x2/x2][8GT/s/8GT/s] +>>> print(scanner.get(type='*Host', is_upstream=True)) +Traceback (most recent call last): + File "<input>", line 1, in <module> + File "/home/sergey/PycharmProjects/py-lspci/pylspci/pci_scanner.py", line 98, in get + if parent.is_host_bridge: +pylspci.pci_scanner.DoesNotExist: Unable to find PCI Device matching: {'type': '*Host', 'is_upstream': True} +``` +### Get Connected +Another tool is **get_connected** method of Scanner, that returns *PCISelect* with all devices connected to passed device. +For Host Bridge it will return all devices in Root Complex. For Upstream of PCI Bridge - all Downstreams. +For Downstream or Root Ports - all connected Upstreams or Endpoints. End for Endpoints it will return empty list. +``` +>>> scanner.get_connected(scanner.get(type='*Host')).count() +14 +``` +py-lspci uses cached value of lspci output, in case if you need to refresh that data, use *force_rescan* argument, +for any of mentioned methods. +``` +>>> scanner.select(force_rescan=True) +``` +### PCI rescan procedure +Last but not least method of *ScannerPCI* is **pci_rescan** that causes full rescan of PCI bus on target machine. +Be careful with this one, because not all distros support proper PCI rescan. +## Versioning +We use [SemVer](http://semver.org/) for versioning. +## Authors +* **[Sergey Parshin](https://github.com/shooshp)** +See also the list of [contributors](https://github.com/YADRO-KNS/py-lspci/graphs/contributors) who participated in this project. +## License +The code is available as open source under the terms of the [MIT License](LICENSE). + +%prep +%autosetup -n py-lspci-0.0.9 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-py-lspci -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 0.0.9-1 +- Package Spec generated @@ -0,0 +1 @@ +f8c2eb012d0e3137e0d6ca9b823d6308 py-lspci-0.0.9.tar.gz |