././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.706625 os-traits-3.1.0/0000775000175000017500000000000000000000000013463 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/.stestr.conf0000664000175000017500000000006200000000000015732 0ustar00zuulzuul00000000000000[DEFAULT] test_path=./os_traits/tests top_dir=./ ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/.zuul.yaml0000664000175000017500000000023200000000000015421 0ustar00zuulzuul00000000000000- project: templates: - publish-openstack-docs-pti - check-requirements - openstack-python3-jobs - release-notes-jobs-python3 ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975400.0 os-traits-3.1.0/AUTHORS0000664000175000017500000000423400000000000014536 0ustar00zuulzuul00000000000000Adam Spiers Andreas Jaeger Artom Lifshitz Balazs Gibizer Charles Short Chris Dent Corey Bryant Dan Smith Danylo Vodopianov Dmitrii Shcherbakov Doug Hellmann EdLeafe Edan David Eric Fried Eric Fried Ghanshyam Mann Jan Hartkopf Jay Pipes Jianghua Wang Jonathan Race Kashyap Chamarthy Kevin Zhao Konstantinos Samaras-Tsakiris Lee Yarwood Lin Yang Matt Riedemann Michael Davies Nobuhiro MIKI OpenStack Release Bot Paul-Emile Element René Ribaud Rico Lin Rodolfo Alonso Hernandez Ruby Loo Sean Mooney Stephen Finucane Stephen Finucane Sundar Nadathur Takashi Kajinami Takashi NATSUME Takashi Natsume Tony Breeds U-HOME\songwenping Victor Morales Vu Cong Tuan Wang Huaqiang Yingxin ZhijunWei caoyuan dineshbhor ericxiett gaozx jacky06 jianghua wang melissaml qingszhao songwenping ya.wang ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/CONTRIBUTING.rst0000664000175000017500000000135700000000000016132 0ustar00zuulzuul00000000000000If you would like to contribute to the development of OpenStack, you must follow the steps in this page: https://docs.openstack.org/infra/manual/developers.html If you already have a good understanding of how the system works and your OpenStack accounts are set up, you can skip to the development workflow section of this documentation to learn how changes to OpenStack should be submitted for review via the Gerrit tool: https://docs.openstack.org/infra/manual/developers.html#development-workflow Pull requests submitted through GitHub will be ignored. Bugs should be filed on StoryBoard, not GitHub: https://storyboard.openstack.org/#!/project/openstack/os-traits The code is hosted at: https://opendev.org/openstack/os-traits ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975400.0 os-traits-3.1.0/ChangeLog0000664000175000017500000001365200000000000015244 0ustar00zuulzuul00000000000000CHANGES ======= 3.1.0 ----- * Add a new trait for stateless firmware support * Bump min versions to exclude known bad versions * Remove old excludes * Add a new trait for AMD SEV-ES * Bupm hacking * Add traits for TPM models * Update spec reference links * Update bug tracker url * Update python classifier in setup.cfg * add pyproject.toml to support pip 23.1 3.0.0 ----- * Comment to the trait was added * Add 'COMPUTE\_NET\_VIRTIO\_PACKED' 2.10.0 ------ * Add 'COMPUTE\_SHARE\_LOCAL\_FS' * Add new 'COMPUTE\_ADDRESS\_SPACE\_\*' traits * Update python classifier for python 3.10 2.9.0 ----- * add new trait for config drive regeneration 2.8.0 ----- * Add traits for vIOMMU * Add COMPUTE\_MANAGED\_PCI\_DEVICE trait * Add 'COMPUTE\_STORAGE\_VIRTIO\_FS', 'COMPUTE\_MEM\_BACKING\_FILE' * Update python testing as per zed cycle testing runtime * Add nova and cyborg owner traits for resources * Remove unnecessary unicode prefixes * Update CI to use unversioned jobs template 2.7.0 ----- * Adds Pick guest CPU architecture based on host arch in libvirt driver support * Updating python testing classifier as per Yoga testing runtime * Add a trait for remote\_managed port-capable nodes * Change minversion of tox to 3.18.0 2.6.0 ----- * Add a trait for the "bochs" display device * Add 'COMPUTE\_FIRMWARE\_UEFI', 'COMPUTE\_FIRMWARE\_BIOS' * setup.cfg: Replace dashes with underscores 2.5.0 ----- * Add COMPUTE\_EPHEMERAL\_ENCRYPTION tratis * Add COMPUTE\_SOCKET\_PCI\_NUMA\_AFFINITY trait * Add a trait for UEFI Secure Boot support * List traits in documentation 2.4.0 ----- * Switch to newer openstackdocstheme and reno versions * CPU: add traits for new AVX512 support * Remove translation sections from setup.cfg * Fix hacking min version to 3.0.1 * Cleanup py27 support 2.3.0 ----- * Switch to hacking 2.x * Remove use of six * setup.cfg: Remove unused 'build\_sphinx' configuration * setup.cfg: Configure 'python-requires' 2.2.0 ----- * Add a trait that compute manager can handle accelerator requests * Add COMPUTE\_RESCUE\_BFV trait 2.1.0 ----- * Add COMPUTE\_SAME\_HOST\_COLD\_MIGRATE trait 2.0.0 ----- * Add 'TYPE\_PLOOP' image type * Stop testing with py2 and switch to ussuri jobs 1.1.0 ----- * Add COMPUTE\_NODE trait 1.0.0 ----- * Privatize and reorganize base package methods * Add method to visualize the os-traits tree * Build pdf docs * Update README to be a bit more clear * Add support for ppc64le platforms * Followup: spec ref for auto-converge/post-copy 0.16.0 ------ * Add new traits to flag live migration features * CPU: add a trait for AVX512-VNNI support * Add Python 3 Train unit tests 0.15.0 ------ * Add COMPUTE\_STATUS\_DISABLED trait * add GOP, NONE and VIRTIO grapics models * add libvirt image metadata traits * Sync Sphinx requirement 0.14.0 ------ * Create trait for NUMA subtree affinity 0.13.0 ------ * hw: cpu: Rework the directory layout; add missing traits * Replace git.openstack.org URLs with opendev.org URLs * Update SEV trait docs to avoid misleading people * Document policy of never removing traits * Dropping the py35 testing * OpenDev Migration Patch 0.12.0 ------ * Add contextual comment about image type traits * Add COMPUTE\_IMAGE\_TYPE\_\* traits * Update master for stable/stein * Update bug links for storyboard * Change python3.5 job to python3.7 job on Stein+ 0.11.0 ------ * Add HW\_CPU\_AMD\_SEV trait * Add new traits for TPM support * Update hacking version to latest * Update author-email in setup.cfg 0.10.0 ------ * Removed older version of python added 3.5 * clean up CUDA traits * add python 3.6 unit test job * switch documentation job to new PTI * import zuul job settings from project-config * Add CUDA versions 8 and 9 * Update reno for stable/rocky * fix tox python3 overrides 0.9.0 ----- * Switch to stestr * Follow the new PTI for document build * tox: Remove '-constraints' targets 0.8.0 ----- * Add release note link in README * Add COMPUTE\_TRUSTED\_CERTS trait * normalize\_name helper * Adds HW\_CPU\_HYPERTHREADING standard trait 0.7.0 ----- * Add compute capabilities traits 0.6.0 ----- * GPU: define traits for maximum display heads * Updated from global requirements * Add HW\_NIC\_SRIOV\_TRUSTED trait * Update Usage information * Add code hosting URL * Updated from global requirements * Update reno for stable/queens * Add CPU features for AArch64 0.5.0 ----- * Updated from global requirements * Add NIC Switchdev feature 0.4.0 ----- * Updated from global requirements * Update the documentation urls * Updated from global requirements * doc: Remove cruft from conf.py * doc: Switch from oslosphinx to openstackdocstheme * Update reno for stable/pike * Add a new parameter \`\`suffix\`\` to function \`\`get\_traits\`\` 0.3.3 ----- * Updated from global requirements * doc: Create directory structure for docs migration * setup.cfg: Add warning-is-error * Remove AUTHORS and ChangeLog 0.3.2 ----- * Add NIC offload features * Add filtering option in "check\_traits" * GPU: add os traits for GPU - resolution * GPU: add os traits for GPU - API * Adjust module level constants to uppercase 0.3.1 ----- * Correctly recurse os\_traits packages * Build\_sphinx always failed 0.3.0 ----- * Adds a validation test for trait names * Remove 'CUSTOM\_NAMESPACE'/'os\_traits' from traits * remove redundant get\_symbol\_names() func * Adds MISC\_SHARES\_VIA\_AGGREGATE standard trait * Automate the import of traits * Add NIC namespace and features * organize os\_traits for the future * Updated from global requirements 0.2.0 ----- * Add storage and disk namespaces and features * Add custom namespace * normalize constants to align with resource classes * update pep8/hacking and address failures 0.1.0 ----- * Manual sync from the openstack/requirements bot * Add check\_traits function * Add tests for os\_traits * Fix testing with tox * Correct .gitignore to exclude \*.egg\* generated by pbr * Rename the rest capabilities to traits * Rename capabilities to traits * Initial commit of os-capabilities library ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/HACKING.rst0000664000175000017500000000021400000000000015256 0ustar00zuulzuul00000000000000os-traits Style Commandments ============================ Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/ ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/LICENSE0000664000175000017500000002363700000000000014503 0ustar00zuulzuul00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/MANIFEST.in0000664000175000017500000000013600000000000015221 0ustar00zuulzuul00000000000000include AUTHORS include ChangeLog exclude .gitignore exclude .gitreview global-exclude *.pyc ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.706625 os-traits-3.1.0/PKG-INFO0000664000175000017500000000347000000000000014564 0ustar00zuulzuul00000000000000Metadata-Version: 1.2 Name: os-traits Version: 3.1.0 Summary: A library containing standardized trait strings Home-page: https://docs.openstack.org/os-traits/latest/ Author: OpenStack Author-email: openstack-discuss@lists.openstack.org License: UNKNOWN Description: ========= os-traits ========= `os-traits` is an OpenStack library containing standardized trait strings. Traits are strings that represent a feature of a resource provider hosted by the Placement_ service. This library contains the catalog of constants that have been standardized in the OpenStack community to refer to a particular hardware, virtualization, storage, network, or device trait. * Free software: Apache license * Documentation: https://docs.openstack.org/os-traits/latest/ * Source: http://opendev.org/openstack/os-traits * Bugs: https://launchpad.net/placement * Release Notes: https://docs.openstack.org/releasenotes/os-traits .. _Placement: https://docs.openstack.org/placement/latest/ Platform: UNKNOWN Classifier: Environment :: OpenStack Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: Apache Software License Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: CPython Requires-Python: >=3.8 ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/README.rst0000664000175000017500000000130400000000000015150 0ustar00zuulzuul00000000000000========= os-traits ========= `os-traits` is an OpenStack library containing standardized trait strings. Traits are strings that represent a feature of a resource provider hosted by the Placement_ service. This library contains the catalog of constants that have been standardized in the OpenStack community to refer to a particular hardware, virtualization, storage, network, or device trait. * Free software: Apache license * Documentation: https://docs.openstack.org/os-traits/latest/ * Source: http://opendev.org/openstack/os-traits * Bugs: https://launchpad.net/placement * Release Notes: https://docs.openstack.org/releasenotes/os-traits .. _Placement: https://docs.openstack.org/placement/latest/ ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1721975400.6986253 os-traits-3.1.0/doc/0000775000175000017500000000000000000000000014230 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1721975400.6986253 os-traits-3.1.0/doc/ext/0000775000175000017500000000000000000000000015030 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/doc/ext/traits.py0000664000175000017500000000265200000000000016715 0ustar00zuulzuul00000000000000# Copyright 2020, Red Hat, Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Generate a listing of all known traits.""" import os import os_traits REFERENCE_DIR = os.path.join( os.path.dirname(os.path.abspath(__file__)), os.pardir, 'source', 'reference', ) def _generate_trait_list(): yield 'Available Traits' yield '================' yield '' yield 'Below is a list of all traits currently available.' yield '' for trait in os_traits.get_traits(): yield f'- ``{trait}``' yield '' def generate_trait_list(app): """Generate a listing of all known traits.""" with open(os.path.join(REFERENCE_DIR, 'traits.rst'), 'w+') as fh: for line in _generate_trait_list(): print(line, file=fh) def setup(app): app.connect('builder-inited', generate_trait_list) return { 'parallel_read_safe': True, 'parallel_write_safe': True, } ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/doc/requirements.txt0000664000175000017500000000014400000000000017513 0ustar00zuulzuul00000000000000sphinx>=2.1.1 # BSD openstackdocstheme>=2.2.1 # Apache-2.0 # releasenotes reno>=3.1.0 # Apache-2.0 ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1721975400.6986253 os-traits-3.1.0/doc/source/0000775000175000017500000000000000000000000015530 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/doc/source/conf.py0000775000175000017500000000466400000000000017044 0ustar00zuulzuul00000000000000# Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. import os import sys # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath('../')) # -- General configuration ---------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [ 'sphinx.ext.autodoc', 'openstackdocstheme', 'ext.traits', ] # openstackdocstheme options openstackdocs_repo_name = 'openstack/os-traits' openstackdocs_pdf_link = True openstackdocs_auto_name = False openstackdocs_bug_project = 'os-traits' # The suffix of source filenames. source_suffix = '.rst' # The master toctree document. master_doc = 'index' # General information about the project. project = 'os-traits' copyright = '2016-2020, OpenStack Foundation' # If true, '()' will be appended to :func: etc. cross-reference text. add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). add_module_names = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'native' # -- Options for HTML output -------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'openstackdocs' # -- Options for LaTeX output ------------------------------------------------- # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass # [howto/manual]). latex_documents = [ ('index', 'doc-os-traits.tex', 'os-traits Documentation', 'OpenStack Foundation', 'manual'), ] ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1721975400.6986253 os-traits-3.1.0/doc/source/contributor/0000775000175000017500000000000000000000000020102 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/doc/source/contributor/index.rst0000664000175000017500000000215400000000000021745 0ustar00zuulzuul00000000000000============ Contributing ============ Trait lifecycle policy ====================== It is the policy of this project that once registered, traits should never be removed, even those which will never be used by code (e.g. as a result of pivots in design or changes to the namespaces). The general principle behind this policy is simply that an extensible-only enumeration is easier to manage than one than can be shrunk. One particular example concerns the need for the placement service to keep its database in sync with the strings in os-traits. Whenever a placement service sees a new version of os-traits it syncs up its database with the strings that are in the package, creating a row in the traits table, with an id that becomes a foreign key in other tables. If traits could be removed, then extra clean-up code might be needed in several places to handle this, and this would be particularly error-prone when execution of that code would need to be correctly orchestrated across multiple projects. Generic instructions for contributing ===================================== .. include:: ../../../CONTRIBUTING.rst ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/doc/source/index.rst0000664000175000017500000000126500000000000017375 0ustar00zuulzuul00000000000000========= os-traits ========= `os-traits` is a library containing standardized trait strings. Traits are strings that represent a feature of some resource provider. This library contains the catalog of constants that have been standardized in the OpenStack community to refer to a particular hardware, virtualization, storage, network, or device trait. Installation Guide ------------------ .. toctree:: :maxdepth: 2 install/index Usage Guide ----------- .. toctree:: :maxdepth: 2 user/index Contributor Guide ----------------- .. toctree:: :maxdepth: 2 contributor/index Reference --------- .. toctree:: :maxdepth: 2 reference/index reference/traits ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1721975400.6986253 os-traits-3.1.0/doc/source/install/0000775000175000017500000000000000000000000017176 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/doc/source/install/index.rst0000664000175000017500000000030400000000000021034 0ustar00zuulzuul00000000000000============ Installation ============ At the command line:: $ pip install os-traits Or, if you have virtualenvwrapper installed:: $ mkvirtualenv os-traits $ pip install os-traits ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1721975400.6986253 os-traits-3.1.0/doc/source/reference/0000775000175000017500000000000000000000000017466 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/doc/source/reference/index.rst0000664000175000017500000000715500000000000021337 0ustar00zuulzuul00000000000000========= Reference ========= .. contents:: :local: CUDA ---- Applications that need to perform massively parallel operations, like processing large arrays, may use the CUDA framework to accelerate their processing on graphics processing units (GPUs). The CUDA framework has two complementary pieces to it. There are a set of GPU instruction set extensions that are implemented by various graphics cards. These instruction set extensions are known as the CUDA Compute Capability. The second part of the framework is an SDK that allows developers to take advantage of the hardware's instruction set extensions of a particular version (a specific CUDA Compute Capability version, that is). An application will link with a version of the CUDA SDK, and the version of the CUDA SDK controls which CUDA Compute Capability versions the application will be able to work with. The ``os_traits.hw.gpu.cuda`` module contains traits for both the CUDA compute capability version as well as the CUDA SDK version. For example, ``os_traits.hw.gpu.cuda.COMPUTE_CAPABILITY_V3_2`` and ``os_traits.hw.gpu.cuda.SDK_V6_5``. The ``os_traits.hw.gpu.cuda`` module contains a utility function called ``compute_capabilities_supported()`` that accepts a trait indicating the CUDA SDK version and returns a ``set()`` containing the matching CUDA compute capability traits that that version of the CUDA SDK knows how to utilize. Here is an example of listing the CUDA compute capability version traits that the CUDA SDK 8.0 is capable of working with:: >>> from os_traits.hw.gpu import cuda >>> import pprint >>> >>> sdk8_caps = cuda.compute_capabilities_supported(cuda.SDK_V8_0) >>> pprint.pprint(sdk8_caps) set(['HW_GPU_CUDA_COMPUTE_CAPABILITY_V2_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V2_1', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V3_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V3_2', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V3_5', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V3_7', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V5_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V5_2', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V5_3', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V6_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V6_1', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V6_2']) For more information on CUDA, see the `Wikipedia article`_. .. _Wikipedia article: https://en.wikipedia.org/wiki/CUDA AMD SEV ------- While data is typically encrypted today when stored on disk, it is stored in DRAM in the clear. This can leave the data vulnerable to snooping by unauthorized administrators or software, or by hardware probing. New non-volatile memory technology (NVDIMM) exacerbates this problem since an NVDIMM chip can be physically removed from a system with the data intact, similar to a hard drive. Without encryption any stored information such as sensitive data, passwords, or secret keys can be easily compromised. `AMD's SEV (Secure Encrypted Virtualization) `_ is a VM protection technology which transparently encrypts the memory of each VM with a unique key. It can also calculate a signature of the memory contents, which can be sent to the VM's owner as an attestation that the memory was encrypted correctly by the firmware. SEV is particularly applicable to cloud computing since it can reduce the amount of trust VMs need to place in the hypervisor and administrator of their host system. The ``os_traits.hw.cpu.amd.SEV`` trait is reserved in order to indicate that a compute host contains support for SEV not only on-CPU, but also in all other layers of the hypervisor stack required in order to take advantage of this feature. ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1721975400.6986253 os-traits-3.1.0/doc/source/user/0000775000175000017500000000000000000000000016506 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/doc/source/user/index.rst0000664000175000017500000000277400000000000020361 0ustar00zuulzuul00000000000000===== Usage ===== `os-traits` is primarily composed of a set of constants that may be referenced by simply importing the ``os_traits`` module and referencing one of the module's traits constants:: $ python3 Python 3.6.8 (default, Oct 7 2019, 12:59:55) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import os_traits as ot >>> print(ot.HW_CPU_X86_SSE42) HW_CPU_X86_SSE42 You can get a list of the ``os_traits`` symbols by simply doing a ``dir(os_traits)``. Want to see the trait strings for a subset of traits? There's a method for that too:: >>> import pprint >>> pprint.pprint(ot.get_traits(prefix='HW_CPU_X86_')) ['HW_CPU_X86_FMA3', 'HW_CPU_X86_AVX', 'HW_CPU_X86_MMX', 'HW_CPU_X86_MPX', 'HW_CPU_X86_CLMUL', 'HW_CPU_X86_AVX512VL', 'HW_CPU_X86_AVX512CD', 'HW_CPU_X86_BMI', 'HW_CPU_X86_AVX512DQ', 'HW_CPU_X86_SSE3', 'HW_CPU_X86_ABM', 'HW_CPU_X86_SSE4A', 'HW_CPU_X86_AESNI', 'HW_CPU_X86_F16C', 'HW_CPU_X86_VMX', 'HW_CPU_X86_SVM', 'HW_CPU_X86_TSX', 'HW_CPU_X86_AVX512PF', 'HW_CPU_X86_SSE41', 'HW_CPU_X86_ASF', 'HW_CPU_X86_SGX', 'HW_CPU_X86_SSE', 'HW_CPU_X86_SSSE3', 'HW_CPU_X86_SHA', 'HW_CPU_X86_TBM', 'HW_CPU_X86_SSE42', 'HW_CPU_X86_3DNOW', 'HW_CPU_X86_BMI2', 'HW_CPU_X86_AVX512BW', 'HW_CPU_X86_XOP', 'HW_CPU_X86_AVX2', 'HW_CPU_X86_AVX512F', 'HW_CPU_X86_SSE2', 'HW_CPU_X86_FMA4', 'HW_CPU_X86_AVX512ER'] ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1721975400.6986253 os-traits-3.1.0/os_traits/0000775000175000017500000000000000000000000015472 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/__init__.py0000664000175000017500000001307700000000000017613 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import importlib import pkgutil import re import sys import pbr.version THIS_NAME = __name__ THIS_LIB = sys.modules[THIS_NAME] TEST_DIR = "%s.tests" % THIS_NAME __version__ = pbr.version.VersionInfo(THIS_NAME).version_string() # Any user-specified feature/trait is prefixed with the custom namespace CUSTOM_NAMESPACE = 'CUSTOM_' def _symbolize(mod_name, props): """Given a reference to a Python module object and an iterable of short string names for traits, registers symbols in the module corresponding to the full namespaced name for each trait. """ for prop in props: leaf_mod = sys.modules[mod_name] value_base = '_'.join([m.upper() for m in mod_name.split('.')[1:]]) value = value_base + '_' + prop.upper() setattr(THIS_LIB, value, value) # os_traits.HW_CPU_X86_SSE setattr(leaf_mod, prop, value) # os_traits.hw.cpu.x86.SSE def _visualize(mod_name, props, seen=None): if mod_name in seen: return seen.add(mod_name) components = mod_name.split('.') tab = ' ' # Print the module name indent = tab * (len(components) - 1) print('%s%s:' % (indent, components[-1].upper())) # Print the properties indent = tab * len(components) if props: print('%s%s' % (indent, ', '.join(props))) def _walk_submodules(package, recursive, callback, **kwargs): """Recursively walk the repository's submodules and invoke a callback for each module with the list of short trait names found therein. :param package: The package (name or module obj) to start from. :param recursive: If True, recurse depth-first. :param callback: Callable to be invoked for each module. The signature is:: callback(mod_name, props, **kwargs) * mod_name: the string name of the module (e.g. 'os_traits.hw.cpu'). * props: an iterable of short string names for traits, gleaned from the TRAITS member of that module, defaulting to []. * kwargs: The same kwargs as passed to _walk_submodules, useful for tracking data across calls. :param kwargs: Arbitrary keyword arguments to be passed to the callback on each invocation. """ if isinstance(package, str): package = importlib.import_module(package) for loader, mod_name, is_pkg in pkgutil.walk_packages( package.__path__, package.__name__ + '.'): if TEST_DIR in mod_name: continue imported = importlib.import_module(mod_name) props = getattr(imported, "TRAITS", []) callback(mod_name, props, **kwargs) if recursive and is_pkg: _walk_submodules(mod_name, recursive, callback, **kwargs) # This is where the names defined in submodules are imported by recursively # importing all submodules/subpackages and symbolizing their TRAITS _walk_submodules(sys.modules.get(__name__), True, _symbolize) def get_traits(prefix=None, suffix=None): """Returns the trait strings in the os_traits module, optionally filtered by a supplied prefix and suffix. :param prefix: Optional string prefix to filter by. e.g. 'HW_' :param suffix: Optional string suffix to filter by, e.g. 'SSE' """ prefix = prefix or "" suffix = suffix or "" return [ v for k, v in sys.modules[__name__].__dict__.items() if isinstance(v, str) and not k.startswith('_') and v.startswith(prefix) and v.endswith(suffix) and # skip module constants k not in ('CUSTOM_NAMESPACE', 'THIS_NAME', 'THIS_LIB', 'TEST_DIR') ] def check_traits(traits, prefix=None): """Returns a tuple of two trait string sets, the first set contains valid traits, and the second contains others. :param traits: An iterable contains trait strings. :param prefix: Optional string prefix to filter by. e.g. 'HW_' """ trait_set = set(traits) valid_trait_set = set(get_traits(prefix)) valid_traits = trait_set & valid_trait_set return (valid_traits, trait_set - valid_traits) def is_custom(trait): """Returns True if the trait string represents a custom trait, or False otherwise. :param trait: String name of the trait """ return trait.startswith(CUSTOM_NAMESPACE) def normalize_name(name): """Converts an input string to a legal* custom trait name. Legal custom trait names are prefixed with CUSTOM_ and contain only the characters A-Z, 0-9, and _ (underscore). *Does not attempt to handle length restrictions. :param name: A string to be converted. :return: A legal* custom trait name. """ if name is None: return None # Replace non-alphanumeric characters with underscores norm_name = re.sub('[^0-9A-Za-z]+', '_', name) # Bug #1762789: Do .upper after replacing non alphanumerics. return CUSTOM_NAMESPACE + norm_name.upper() def print_tree(): """Print (to stdout) a visual representation of all the namespaces and the (short) trait names defined therein. """ _walk_submodules(sys.modules.get(__name__), True, _visualize, seen=set()) ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.702625 os-traits-3.1.0/os_traits/compute/0000775000175000017500000000000000000000000017146 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/__init__.py0000664000175000017500000000473500000000000021270 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # The virt driver supports associating a tag with a device *at boot time* 'DEVICE_TAGGING', # A provider with this trait is a compute *node*. (As distinct from # "compute host" or "hypervisor". These may be synonymous in some cases, # but the distinction matters e.g. when using the ironic virt driver.) 'NODE', # The virt driver supports trusted image certificate validation 'TRUSTED_CERTS', # The virt driver supports cold migrating to the same compute service host. # This really only works for a cluster-type hypervisor driver like the # vCenter driver which is a single compute service host managing a vCenter # cluster of potentially hundreds of ESXi hosts. Note that this trait will # not make sense to use in GET /allocation_candidates until/unless there is # a way to tie it to the condition of SAME_HOST-ness. 'SAME_HOST_COLD_MIGRATE', # The virt driver supports rescuing boot from volume instances. 'RESCUE_BFV', # The compute manager supports handling accelerator requests. 'ACCELERATORS', # The compute manager supports the `socket` value for the # hw_pci_numa_affinity_policy image property/flavor extra spec. 'SOCKET_PCI_NUMA_AFFINITY', # The compute manager supports handling remote_managed PCI devices # associated with SmartNIC DPUs. 'REMOTE_MANAGED_PORTS', # The compute manager is configured to support file-backed memory. # https://docs.openstack.org/nova/latest/admin/file-backed-memory.html 'MEM_BACKING_FILE', # Nova use this to indicate that an RP has inventories of PCI device(s) # managed by the nova-compute service 'MANAGED_PCI_DEVICE', # The virt driver supports pass-through or emulated modes for guest # physical address bits. 'ADDRESS_SPACE_PASSTHROUGH', 'ADDRESS_SPACE_EMULATED', # The compute manager supports share local fs (via virtiofs) 'SHARE_LOCAL_FS', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/arch.py0000664000175000017500000000154000000000000020435 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # traits corresponding to the allowed values of "hw_emulaton_architecture" # image metadata property # https://github.com/openstack/nova/blob/1f74441/nova/objects/fields.py#L120-228 'AARCH64', 'PPC64LE', 'MIPSEL', 'S390X', 'RISCV64', 'X86_64', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/config_drive.py0000664000175000017500000000113400000000000022155 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ 'REGENERATION', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/ephemeral.py0000664000175000017500000000124200000000000021461 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ 'ENCRYPTION', 'ENCRYPTION_PLAIN', 'ENCRYPTION_LUKS', 'ENCRYPTION_LUKSV2', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/firmware.py0000664000175000017500000000124400000000000021335 0ustar00zuulzuul00000000000000# Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # The virt driver supports BIOS instancs. 'BIOS', # The virt driver supports UEFI instances. 'UEFI', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/graphics.py0000664000175000017500000000164500000000000021326 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # traits corresponding to the allowed values of "hw_video_model" # image metadata property # https://github.com/openstack/nova/blob/1f74441/nova/objects/fields.py#L501-L509 'MODEL_BOCHS', 'MODEL_CIRRUS', 'MODEL_GOP', 'MODEL_NONE', 'MODEL_QXL', 'MODEL_VGA', 'MODEL_VIRTIO', 'MODEL_VMVGA', 'MODEL_XEN', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/image.py0000664000175000017500000000232100000000000020600 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # This is fed from the list at # https://docs.openstack.org/glance/latest/user/formats.html#disk-format # and should be kept up to date with same. TRAITS = [ # Amazon kernel, machine, and ramdisk images 'TYPE_AKI', 'TYPE_AMI', 'TYPE_ARI', # Optical media 'TYPE_ISO', # Native format for QEMU 'TYPE_QCOW2', # Unstructured generic byte-for-byte disk image 'TYPE_RAW', # Native format for VirtualBox 'TYPE_VDI', # VHD, VHDX disk (VMware, Xen, Microsoft, VirtualBox, etc) 'TYPE_VHD', 'TYPE_VHDX', # Native format for VMware 'TYPE_VMDK', # Native format for Virtuozzo 'TYPE_PLOOP', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/migrate.py0000664000175000017500000000135200000000000021151 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # ref: http://specs.openstack.org/openstack/nova-specs/specs/train/approved/expose-auto-converge-post-copy.html # noqa 'AUTO_CONVERGE', 'POST_COPY', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/net.py0000664000175000017500000000255700000000000020317 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # The virt driver supports attaching a network interface after boot 'ATTACH_INTERFACE', # The virt driver supports attaching a network interface after boot and # specifying a device tag for the interface 'ATTACH_INTERFACE_WITH_TAG', # The virt driver supports Packed virtqueue format 'VIRTIO_PACKED', # traits corresponding to the allowed values of "hw_vif_model" # image metadata property # https://github.com/openstack/nova/blob/1f74441/nova/network/model.py#L136-L149 'VIF_MODEL_E1000', 'VIF_MODEL_E1000E', 'VIF_MODEL_LAN9118', 'VIF_MODEL_NETFRONT', 'VIF_MODEL_NE2K_PCI', 'VIF_MODEL_PCNET', 'VIF_MODEL_RTL8139', 'VIF_MODEL_SPAPR_VLAN', 'VIF_MODEL_SRIOV', 'VIF_MODEL_VIRTIO', 'VIF_MODEL_VMXNET', 'VIF_MODEL_VMXNET3', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/security.py0000664000175000017500000000225300000000000021371 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # ref: https://specs.openstack.org/openstack/nova-specs/specs/victoria/implemented/add-emulated-virtual-tpm.html # noqa # support for TPM 1.2 'TPM_1_2', # support for TPM 2.0 'TPM_2_0', # support for TPM with TPM interface Specification(TIS) 'TPM_TIS', # support for TPM with Command-Response Buffer(CRB) 'TPM_CRB', # support for UEFI Secure Boot # ref: https://specs.openstack.org/openstack/nova-specs/specs/wallaby/implemented/allow-secure-boot-for-qemu-kvm-guests.html # noqa 'UEFI_SECURE_BOOT', # support for stateless firmware 'STATELESS_FIRMWARE' ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/status.py0000664000175000017500000000121600000000000021043 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # The compute node resource provider is disabled. 'DISABLED', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/storage.py0000664000175000017500000000174700000000000021175 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # traits corresponding to the allowed values of "hw_disk_bus" # and "hw_cdrom_bus" image metadata properties # https://github.com/openstack/nova/blob/1f74441/nova/objects/fields.py#L320-L332 'BUS_FDC', 'BUS_IDE', 'BUS_LXC', 'BUS_SATA', 'BUS_SCSI', 'BUS_USB', 'BUS_VIRTIO', 'BUS_UML', 'BUS_XEN', # The compute manager supports virtio filesystems. 'VIRTIO_FS', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/viommu.py0000664000175000017500000000157300000000000021042 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # traits corresponding to the allowed values of "hw_iommu_model" # image metadata property # Please check VIOMMUModel under /nova/objects/fields.py # we do not include None as by default no iommu will be provided 'MODEL_INTEL', 'MODEL_SMMUV3', 'MODEL_VIRTIO', 'MODEL_AUTO', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/compute/volume.py0000664000175000017500000000170600000000000021033 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # The virt driver supports attaching a volume after boot 'ATTACH', # The virt driver supports attaching a volume after boot and specifying a # device tag for the volume 'ATTACH_WITH_TAG', # The virt driver supports extending a volume after boot 'EXTEND', # The virt driver supports volumes that can be attached to multiple guests 'MULTI_ATTACH', ] ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.702625 os-traits-3.1.0/os_traits/hw/0000775000175000017500000000000000000000000016110 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/__init__.py0000664000175000017500000000000000000000000020207 0ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/arch.py0000664000175000017500000000233100000000000017376 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # traits corresponding to the allowed values of "hw_architecture" # image metadata property # https://github.com/openstack/nova/blob/1f74441/nova/objects/fields.py#L120-228 'ALPHA', 'ARMV6', 'ARMV7', 'ARMV7B', 'AARCH64', 'CRIS', 'I686', 'IA64', 'LM32', 'M68K', 'MICROBLAZE', 'MICROBLAZEEL', 'MIPS', 'MIPSEL', 'MIPS64', 'MIPS64EL', 'OPENRISC', 'PARISC', 'PARISC64', 'PPC', 'PPCLE', 'PPC64', 'PPC64LE', 'PPCEMB', 'S390', 'S390X', 'SH4', 'SH4EB', 'SPARC', 'SPARC64', 'UNICORE32', 'X86_64', 'XTENSA', 'XTENSAEB', ] ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.702625 os-traits-3.1.0/os_traits/hw/cpu/0000775000175000017500000000000000000000000016677 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/cpu/__init__.py0000664000175000017500000000207600000000000021015 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # A few generalized capabilities of some RP TRAITS = [ # The resource provider decorated with this trait indicates that # hyperthreading is enabled on the provider. # Operators of resource-constrained systems would be able to decorate a # single NUMA node resource provider on a multi-socket system with this # HW_CPU_HYPERTHREADING trait to “carve out” a part of the host system # for guests that can tolerate hyperthread siblings providing CPU # resources. 'HYPERTHREADING', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/cpu/aarch64.py0000664000175000017500000000436100000000000020505 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Copyright 2017 Arm Limited. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # ref: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ # linux.git/commit/?id=9703d9d7f 'FP', 'ASIMD', # ref: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ # linux.git/commit/?id=46efe547a 'EVTSTRM', # ref: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ # linux.git/commit/?id=4bff28ccd 'AES', 'PMULL', 'SHA1', 'SHA2', 'CRC32', # ref: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ # linux.git/commit/?id=bf5006184 'FPHP', 'ASIMDHP', # ref: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ # linux.git/commit/?id=f92f5ce01 'ASIMDRDM', # ref: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ # linux.git/commit/?id=40a1db243 'ATOMICS', # ref: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ # linux.git/commit/?id=c8c3798d2 'JSCVT', # ref: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ # linux.git/commit/?id=cb567e79f 'FCMA', # ref: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ # linux.git/commit/?id=c651aae5a 'LRCPC', # ref: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ # linux.git/commit/?id=7aac405eb 'DCPOP', # ref: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ # linux.git/commit/?id=f5e035f86 'SHA3', 'SM3', 'SM4', 'ASIMDDP', 'SHA512', # ref: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ # linux.git/commit/?id=43994d824 'SVE', # ref: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/ # linux.git/commit/?id=77c97b4ee 'CPUID', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/cpu/amd.py0000664000175000017500000000266500000000000020023 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # ref: https://docs.openstack.org/os-traits/latest/contributor/index.html#trait-lifecycle-policy # noqa # NOTE(kchamart): This file is deprecated. The 'SEV' trait is # AMD-only, so it is copied to hw/cpu/amd.py; it is retained here # not to cause Placement breakage. All AMD-only traits are being # tracked under: hw/cpu/x86/amd.py. And the traits common to both # AMD _and_ Intel are being tracked here: hw/cpu/x86/__init__.py. # # NOTE(aspiers): This trait was never used for anything, since the # first bit of SEV code to use an SEV trait will land after this # https://review.opendev.org/#/c/638680/ which has an explicit # 'Depends-On' against the change I1c9a72d19ef ("hw: cpu: Rework the # directory layout; add missing traits"), and is actually blocked # until I1c9a72d19ef merges *and* gets released. 'SEV', ] ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.702625 os-traits-3.1.0/os_traits/hw/cpu/ppc64le/0000775000175000017500000000000000000000000020154 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/cpu/ppc64le/__init__.py0000664000175000017500000000114400000000000022265 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ 'POWER8', 'POWER9' ] ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.702625 os-traits-3.1.0/os_traits/hw/cpu/x86/0000775000175000017500000000000000000000000017324 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/cpu/x86/__init__.py0000664000175000017500000000662300000000000021444 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # ref: https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions 'AVX', 'AVX2', 'CLMUL', 'FMA3', 'FMA4', 'F16C', 'MMX', 'SSE', 'SSE2', 'SSE3', 'SSSE3', 'SSE41', 'SSE42', 'SSE4A', 'XOP', '3DNOW', # ref: https://en.wikipedia.org/wiki/AVX-512 'AVX512F', # foundation 'AVX512CD', # conflict detection 'AVX512PF', # prefetch 'AVX512ER', # exponential + reciprocal 'AVX512VL', # vector length extensions 'AVX512BW', # byte + word 'AVX512DQ', # double word + quad word 'AVX512VNNI', # vector neural network instructions 'AVX512VBMI', # vector byte manipulation instructions 'AVX512IFMA', # integer fused multiply add 'AVX512VBMI2', # vector byte manipulation instructions 2 'AVX512BITALG', # bit algorithms 'AVX512VAES', # vector aes instructions 'AVX512GFNI', # galois field new instructions 'AVX512VPCLMULQDQ', # carry-less multiplication of quadwords 'AVX512VPOPCNTDQ', # vector population count instruction # ref: https://en.wikipedia.org/wiki/Bit_Manipulation_Instruction_Sets 'ABM', 'BMI', 'BMI2', 'TBM', # ref: https://en.wikipedia.org/wiki/AES_instruction_set 'AESNI', # ref: https://en.wikipedia.org/wiki/Intel_SHA_extensions 'SHA', # ref: https://en.wikipedia.org/wiki/Intel_MPX 'MPX', # ref: https://en.wikipedia.org/wiki/Software_Guard_Extensions 'SGX', # ref: # https://en.wikipedia.org/wiki/Transactional_Synchronization_Extensions 'TSX', # ref: https://en.wikipedia.org/wiki/Advanced_Synchronization_Facility 'ASF', # ref: https://en.wikipedia.org/wiki/VT-x # NOTE(kchamart): The 'VMX' trait is Intel-only, and does not belong # in this file (which is supposed to be a "common" file for all # x86-related). But we need to retain it here forever to not cause # Placement breakage. 'VMX', # ref: https://en.wikipedia.org/wiki/AMD-V # NOTE(kchamart): The 'SVM' trait is AMD-only, and does not belong # in this "common" file. But we need to retain it here forever to # not cause Placement breakage. 'SVM', # ref: https://git.qemu.org/?p=qemu.git;a=blob;f=docs/qemu-cpu-models.texi # Recommended to allow guest OS to use 1 GB size memory pages. Not # included by default in any of the Intel and AMD CPU models. So # this should be explicitly turned on for all Intel and AMD CPU # models. 'PDPE1GB', # ref: https://git.qemu.org/?p=qemu.git;a=blob;f=docs/qemu-cpu-models.texi # Required to enable stronger Spectre v2 (CVE-2017-5715) fixes in # some operating systems. This flag must be explicitly turned on # for *all* Intel and AMD CPU models. (Prerequisite: host CPU # microcode needs to support this feature before it can be used for # guest CPUs). 'STIBP', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/cpu/x86/amd.py0000664000175000017500000000161000000000000020435 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # ref: https://www.amd.com/en/developer/sev.html 'SEV', 'SEV_ES', # ref: https://en.wikipedia.org/wiki/AMD-V 'SVM', # ref: https://git.qemu.org/?p=qemu.git;a=blob;f=docs/qemu-cpu-models.texi # (Important CPU features for AMD x86 hosts) 'IBPB', 'NO_SSB', 'SSBD', 'VIRT_SSBD', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/cpu/x86/intel.py0000664000175000017500000000163400000000000021015 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # Required as mitigation for "MDS" (Microarchitectural Data # Sampling) security flaws 'MD_CLEAR', # ref: https://git.qemu.org/?p=qemu.git;a=blob;f=docs/qemu-cpu-models.texi # (Important CPU features for Intel x86 hosts) 'PCID', 'SPEC_CTRL', 'SSBD', # ref: https://en.wikipedia.org/wiki/VT-x 'VMX', ] ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.702625 os-traits-3.1.0/os_traits/hw/gpu/0000775000175000017500000000000000000000000016703 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/gpu/__init__.py0000664000175000017500000000000000000000000021002 0ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/gpu/api.py0000664000175000017500000000342500000000000020032 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # ref: https://en.wikipedia.org/wiki/DirectX 'DIRECTX_V10', 'DIRECTX_V11', 'DIRECTX_V12', # ref: https://en.wikipedia.org/wiki/Direct2D 'DIRECT2D', # ref: https://en.wikipedia.org/wiki/Direct3D 'DIRECT3D_V6_0', 'DIRECT3D_V7_0', 'DIRECT3D_V8_0', 'DIRECT3D_V8_1', 'DIRECT3D_V9_0', 'DIRECT3D_V9_0B', 'DIRECT3D_V9_0C', 'DIRECT3D_V9_0L', 'DIRECT3D_V10_0', 'DIRECT3D_V10_1', 'DIRECT3D_V11_0', 'DIRECT3D_V11_1', 'DIRECT3D_V11_2', 'DIRECT3D_V11_3', 'DIRECT3D_V12_0', # ref: https://en.wikipedia.org/wiki/Vulkan_(API) 'VULKAN', # ref: https://en.wikipedia.org/wiki/DirectX_Video_Acceleration 'DXVA', # ref: https://en.wikipedia.org/wiki/OpenCL 'OPENCL_V1_0', 'OPENCL_V1_1', 'OPENCL_V1_2', 'OPENCL_V2_0', 'OPENCL_V2_1', 'OPENCL_V2_2', # ref: https://en.wikipedia.org/wiki/OpenGL 'OPENGL_V1_1', 'OPENGL_V1_2', 'OPENGL_V1_3', 'OPENGL_V1_4', 'OPENGL_V1_5', 'OPENGL_V2_0', 'OPENGL_V2_1', 'OPENGL_V3_0', 'OPENGL_V3_1', 'OPENGL_V3_2', 'OPENGL_V3_3', 'OPENGL_V4_0', 'OPENGL_V4_1', 'OPENGL_V4_2', 'OPENGL_V4_3', 'OPENGL_V4_4', 'OPENGL_V4_5', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/gpu/cuda.py0000664000175000017500000001274200000000000020177 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ CUDA ---- Applications that need to perform massively parallel operations, like processing large arrays, may use the CUDA framework to accelerate their processing on graphics processing units (GPUs). The CUDA framework has two complementary pieces to it. There are a set of GPU instruction set extensions that are implemented by various graphics cards. These instruction set extensions are known as the CUDA Compute Capability. The second part of the framework is an SDK that allows developers to take advantage of the hardware's instruction set extensions of a particular version (a specific CUDA Compute Capability version, that is). An application will link with a version of the CUDA SDK, and the version of the CUDA SDK controls which CUDA Compute Capability versions the application will be able to work with. The ``os_traits.hw.gpu.cuda`` module contains traits for both the CUDA compute capability version as well as the CUDA SDK version. For example, ``os_traits.hw.gpu.cuda.COMPUTE_CAPABILITY_V3_2`` and ``os_traits.hw.gpu.cuda.SDK_V6_5``. The ``os_traits.hw.gpu.cuda`` module contains a utility function called ``compute_capabilities_supported()`` that accepts a trait indicating the CUDA SDK version and returns a ``set()`` containing the matching CUDA compute capability traits that that version of the CUDA SDK knows how to utilize. Here is an example of listing the CUDA compute capability version traits that the CUDA SDK 8.0 is capable of working with:: >>> from os_traits.hw.gpu import cuda >>> import pprint >>> >>> sdk8_caps = cuda.compute_capabilities_supported(cuda.SDK_V8_0) >>> pprint.pprint(sdk8_caps) set(['HW_GPU_CUDA_COMPUTE_CAPABILITY_V2_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V2_1', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V3_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V3_2', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V3_5', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V3_7', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V5_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V5_2', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V5_3', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V6_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V6_1', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V6_2']) For more information on CUDA, see the `Wikipedia article`_. .. _Wikipedia article: https://en.wikipedia.org/wiki/CUDA """ TRAITS = [ # ref: https://en.wikipedia.org/wiki/CUDA # ref: https://developer.nvidia.com/cuda-toolkit-archive 'COMPUTE_CAPABILITY_V1_0', 'COMPUTE_CAPABILITY_V1_1', 'COMPUTE_CAPABILITY_V1_2', 'COMPUTE_CAPABILITY_V1_3', 'COMPUTE_CAPABILITY_V2_0', 'COMPUTE_CAPABILITY_V2_1', 'COMPUTE_CAPABILITY_V3_0', 'COMPUTE_CAPABILITY_V3_2', 'COMPUTE_CAPABILITY_V3_5', 'COMPUTE_CAPABILITY_V3_7', 'COMPUTE_CAPABILITY_V5_0', 'COMPUTE_CAPABILITY_V5_2', 'COMPUTE_CAPABILITY_V5_3', 'COMPUTE_CAPABILITY_V6_0', 'COMPUTE_CAPABILITY_V6_1', 'COMPUTE_CAPABILITY_V6_2', 'COMPUTE_CAPABILITY_V7_0', 'COMPUTE_CAPABILITY_V7_1', 'COMPUTE_CAPABILITY_V7_2', 'SDK_V6_5', 'SDK_V7_5', 'SDK_V8_0', 'SDK_V9_0', 'SDK_V9_1', 'SDK_V9_2', 'SDK_V10_0', ] _CAPS_V1 = [ 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V1_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V1_1', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V1_2', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V1_3', ] _CAPS_V2 = [ 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V2_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V2_1', ] _CAPS_V3 = [ 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V3_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V3_2', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V3_5', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V3_7', ] _CAPS_V5 = [ 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V5_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V5_2', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V5_3', ] _CAPS_V6 = [ 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V6_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V6_1', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V6_2', ] _CAPS_V7 = [ 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V7_0', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V7_1', 'HW_GPU_CUDA_COMPUTE_CAPABILITY_V7_2', ] _SDK_COMPUTE_CAP_SUPPORT = { 'HW_GPU_CUDA_SDK_V6_5': set( _CAPS_V1 + _CAPS_V2 + _CAPS_V3 + _CAPS_V5 ), 'HW_GPU_CUDA_SDK_V7_5': set( _CAPS_V2 + _CAPS_V3 + _CAPS_V5 ), 'HW_GPU_CUDA_SDK_V8_0': set( _CAPS_V2 + _CAPS_V3 + _CAPS_V5 + _CAPS_V6 ), 'HW_GPU_CUDA_SDK_V9_0': set( _CAPS_V3 + _CAPS_V5 + _CAPS_V6 + _CAPS_V7 ), 'HW_GPU_CUDA_SDK_V9_1': set( _CAPS_V3 + _CAPS_V5 + _CAPS_V6 + _CAPS_V7 ), 'HW_GPU_CUDA_SDK_V9_2': set( _CAPS_V3 + _CAPS_V5 + _CAPS_V6 + _CAPS_V7 ), 'HW_GPU_CUDA_SDK_V10_0': set( _CAPS_V3 + _CAPS_V5 + _CAPS_V6 + _CAPS_V7 ), } def compute_capabilities_supported(sdk_trait): """Given an SDK trait, returns a set of compute capability traits that the version of the SDK supports. Returns None if no matches were found for the SDK trait. """ return _SDK_COMPUTE_CAP_SUPPORT.get(sdk_trait) ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/gpu/max_display_heads.py0000664000175000017500000000125400000000000022735 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # The maximal number of display outputs or heads. '1', '2', '4', '6', '8', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/gpu/resolution.py0000664000175000017500000000200100000000000021451 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # ref: https://en.wikipedia.org/wiki/Display_resolution 'W320H240', 'W640H480', 'W800H600', 'W1024H600', 'W1024H768', 'W1152H864', 'W1280H720', 'W1280H768', 'W1280H800', 'W1280H1024', 'W1360H768', 'W1366H768', 'W1440H900', 'W1600H900', 'W1600H1200', 'W1680H1050', 'W1920H1080', 'W1920H1200', 'W2560H1440', 'W2560H1600', 'W3840H2160', 'W7680H4320', ] ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.706625 os-traits-3.1.0/os_traits/hw/nic/0000775000175000017500000000000000000000000016661 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/nic/__init__.py0000664000175000017500000000162300000000000020774 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # A few generalized capabilities of some NICs TRAITS = [ 'SRIOV', # NIC supports partitioning via SR-IOV 'MULTIQUEUE', # >1 receive and transmit queues 'VMDQ', # Virtual machine device queues # Some NICs allow processing pipelines to be programmed via FPGAs embedded # in the NIC itself... 'PROGRAMMABLE_PIPELINE', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/nic/accel.py0000664000175000017500000000150200000000000020300 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ 'SSL', # SSL crypto 'IPSEC', # IP-Sec crypto 'TLS', # TLS crypto 'DIFFIEH', # Diffie-Hellmann crypto 'RSA', # RSA crypto 'ECC', # Eliptic Curve crypto 'LZS', # LZS compression 'DEFLATE', # Deflate compression ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/nic/dcb.py0000664000175000017500000000137500000000000017771 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # IEEE 802.1Qbb Priority-flow control 'PFC', # IEEE 802.1Qaz Enhanced Transmission Selection 'ETS', # IEEE 802.1Qau Quantized Congestion Notification 'QCN', ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/nic/offload.py0000664000175000017500000000256700000000000020657 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ 'TSO', # TCP segmentation 'GRO', # Generic receive 'GSO', # Generic segmentation 'UFO', # UDP Fragmentation 'LRO', # Large receive 'LSO', # Large send 'TCS', # TCP Checksum 'UCS', # UDP Checksum 'SCS', # SCTP Checksum 'L2CRC', # Layer-2 CRC 'FDF', # Intel Flow-Director Filter 'RXVLAN', # VLAN receive tunnel segmentation 'TXVLAN', # VLAN transmit tunnel segmentation 'VXLAN', # VxLAN tunneling 'GRE', # GRE tunneling 'GENEVE', # Geneve tunneling 'TXUDP', # UDP transmit tunnel segmentation 'QINQ', # QinQ specification 'RDMA', # remote direct memory access 'RXHASH', # receive hashing 'RX', # RX checksumming 'TX', # RX checksumming 'SG', # scatter-gather 'SWITCHDEV', # Offload datapath rules ] ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/nic/sriov.py0000664000175000017500000000215600000000000020401 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # Individual virtual functions can restrict transmit rates 'QOS_TX', # Individual virtual functions can restrict receive rates 'QOS_RX', # Individual virtual functions can set up multiple receive and transmit # queues for receive-side scaling 'MULTIQUEUE', # If associated with a resource provider representing a physical function, # all VFs on the PF are marked as trusted. If set on a resource provider # representing a single virtual function, the VF is individually marked as # trusted. 'TRUSTED', ] ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.706625 os-traits-3.1.0/os_traits/hw/numa/0000775000175000017500000000000000000000000017050 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/hw/numa/__init__.py0000664000175000017500000000163400000000000021165 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # Characteristics of NUMA nodes/cells/sockets/etc. TRAITS = [ # A provider representing the subtree root of a NUMA node should be # decorated with this trait so that requests can represent NUMA affinity # even when no resources are requested from the NUMA node provider itself. # See https://review.opendev.org/#/c/662191/ 'ROOT', ] ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.706625 os-traits-3.1.0/os_traits/misc/0000775000175000017500000000000000000000000016425 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/misc/__init__.py0000664000175000017500000000335700000000000020546 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # Indicates that the resource provider decorated with this trait exposes # its resources for consumption on *other* resource providers via an # aggregate association. The canonical example here would be a shared # storage pool. # # The deployer might create a resource provider, let's call it "NFS_SHARE" # that has an inventory record of 2000 total DISK_GB resources. # # There may be 10 other resource providers, let's call them "CN_1" through # "CN_10" that represent compute nodes. These compute node resource # providers have inventory records for MEMORY_MB and VCPU resources, but no # DISK_GB inventory. # # Both the "NFS_SHARE" resource provider and each of the "CN_x" resource # providers are associated to the same aggregate, let's call it "AGG_A". # # Deployers would decorate the "NFS_SHARE" resource provider with the # "MISC_SHARES_VIA_AGGREGATE" trait to indicate to the system that the # DISK_GB inventory it provides can be consumed by consumers of resources # on any of the other resource providers associated with any aggregate # "NFS_SHARE" is associated to. 'SHARES_VIA_AGGREGATE', ] ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.706625 os-traits-3.1.0/os_traits/owner/0000775000175000017500000000000000000000000016624 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/owner/__init__.py0000664000175000017500000000127100000000000020736 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ # The resource provider owner is Cyborg. 'CYBORG', # The resource provider owner is Nova. 'NOVA' ] ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.706625 os-traits-3.1.0/os_traits/storage/0000775000175000017500000000000000000000000017136 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/storage/__init__.py0000664000175000017500000000000000000000000021235 0ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/storage/disk.py0000664000175000017500000000120500000000000020440 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. TRAITS = [ 'HDD', # spinning oxide 'SSD', # solid-state disks ] ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.706625 os-traits-3.1.0/os_traits/tests/0000775000175000017500000000000000000000000016634 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/tests/__init__.py0000664000175000017500000000000000000000000020733 0ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/tests/base.py0000664000175000017500000000143200000000000020120 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Copyright 2010-2011 OpenStack Foundation # Copyright (c) 2013 Hewlett-Packard Development Company, L.P. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from oslotest import base class TestCase(base.BaseTestCase): """Test case base class for all unit tests.""" ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/tests/test_cuda.py0000664000175000017500000000275400000000000021171 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from os_traits.hw.gpu import cuda from os_traits.tests import base class TestCUDA(base.TestCase): def test_unknown_sdk_support(self): self.assertIsNone(cuda.compute_capabilities_supported('UNKNOWN')) def test_sdk6_5_support(self): expected = set([ cuda.COMPUTE_CAPABILITY_V1_0, cuda.COMPUTE_CAPABILITY_V1_1, cuda.COMPUTE_CAPABILITY_V1_2, cuda.COMPUTE_CAPABILITY_V1_3, cuda.COMPUTE_CAPABILITY_V2_0, cuda.COMPUTE_CAPABILITY_V2_1, cuda.COMPUTE_CAPABILITY_V3_0, cuda.COMPUTE_CAPABILITY_V3_2, cuda.COMPUTE_CAPABILITY_V3_5, cuda.COMPUTE_CAPABILITY_V3_7, cuda.COMPUTE_CAPABILITY_V5_0, cuda.COMPUTE_CAPABILITY_V5_2, cuda.COMPUTE_CAPABILITY_V5_3, ]) actual = cuda.compute_capabilities_supported(cuda.SDK_V6_5) self.assertEqual(expected, actual) ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/os_traits/tests/test_os_traits.py0000664000175000017500000001204700000000000022260 0ustar00zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import re import os_traits as ot from os_traits.hw.cpu import x86 from os_traits.hw.gpu import api from os_traits.hw.gpu import resolution from os_traits.hw.nic import offload from os_traits.tests import base class TestSymbols(base.TestCase): def test_trait(self): """Simply tests that the constants from submodules are imported into the primary os_traits module space. """ trait = ot.HW_CPU_X86_SSE42 self.assertEqual("HW_CPU_X86_SSE42", trait) # And the "leaf-module" namespace... self.assertEqual(x86.SSE42, ot.HW_CPU_X86_SSE42) self.assertEqual(api.DIRECTX_V10, ot.HW_GPU_API_DIRECTX_V10) self.assertEqual(resolution.W1920H1080, ot.HW_GPU_RESOLUTION_W1920H1080) self.assertEqual(offload.TSO, ot.HW_NIC_OFFLOAD_TSO) def test_get_traits_filter_by_prefix(self): traits = ot.get_traits('HW_CPU') self.assertIn("HW_CPU_X86_SSE42", traits) self.assertIn("HW_CPU_HYPERTHREADING", traits) self.assertIn(ot.HW_CPU_X86_AVX2, traits) self.assertNotIn(ot.STORAGE_DISK_SSD, traits) self.assertNotIn(ot.HW_NIC_SRIOV, traits) self.assertNotIn('CUSTOM_NAMESPACE', traits) self.assertNotIn('os_traits', traits) def test_dunderinit_and_nondunderinit(self): """Make sure we can have both dunderinit'd traits and submodules co-exist in the same namespace. """ traits = ot.get_traits('COMPUTE') self.assertIn("COMPUTE_DEVICE_TAGGING", traits) self.assertIn(ot.COMPUTE_DEVICE_TAGGING, traits) self.assertIn("COMPUTE_VOLUME_EXTEND", traits) self.assertIn(ot.COMPUTE_NET_ATTACH_INTERFACE, traits) def test_get_traits_filter_by_suffix(self): traits = ot.get_traits(suffix='SSE42') self.assertIn("HW_CPU_X86_SSE42", traits) self.assertEqual(1, len(traits)) def test_get_traits_filter_by_prefix_and_suffix(self): traits = ot.get_traits(prefix='HW_NIC', suffix='RSA') self.assertIn("HW_NIC_ACCEL_RSA", traits) self.assertNotIn(ot.HW_NIC_ACCEL_TLS, traits) self.assertEqual(1, len(traits)) traits = ot.get_traits(prefix='HW_NIC', suffix='TX') self.assertIn("HW_NIC_SRIOV_QOS_TX", traits) self.assertIn("HW_NIC_OFFLOAD_TX", traits) self.assertEqual(2, len(traits)) def test_check_traits(self): traits = set(["HW_CPU_X86_SSE42", "HW_CPU_X86_XOP"]) not_traits = set(["not_trait1", "not_trait2"]) check_traits = [] check_traits.extend(traits) check_traits.extend(not_traits) self.assertEqual((traits, not_traits), ot.check_traits(check_traits)) def test_check_traits_filter_by_prefix(self): hw_trait = "HW_CPU_X86_SSE42" storage_trait = "STORAGE_DISK_SSD" check_traits = [hw_trait, storage_trait] self.assertEqual((set([hw_trait]), set([storage_trait])), ot.check_traits(check_traits, "HW")) self.assertEqual((set([storage_trait]), set([hw_trait])), ot.check_traits(check_traits, "STORAGE")) self.assertEqual((set(), set([hw_trait, storage_trait])), ot.check_traits(check_traits, "MISC")) def test_is_custom(self): self.assertTrue(ot.is_custom('CUSTOM_FOO')) self.assertFalse(ot.is_custom('HW_CPU_X86_SSE42')) def test_trait_names_match_regex(self): traits = ot.get_traits() valid_name = re.compile("^[A-Z][A-Z0-9_]*$") for t in traits: match = valid_name.match(t) if not match: self.fail("Trait %s does not validate name regex." % t) def test_normalize_name(self): values = [ ("foo", "CUSTOM_FOO"), ("VCPU", "CUSTOM_VCPU"), ("CUSTOM_BOB", "CUSTOM_CUSTOM_BOB"), ("CUSTM_BOB", "CUSTOM_CUSTM_BOB"), (u"Fu\xdfball", u"CUSTOM_FU_BALL"), ("abc-123", "CUSTOM_ABC_123"), ("Hello, world! This is a test ^_^", "CUSTOM_HELLO_WORLD_THIS_IS_A_TEST_"), (" leading and trailing spaces ", "CUSTOM__LEADING_AND_TRAILING_SPACES_"), ] for test_value, expected in values: result = ot.normalize_name(test_value) self.assertEqual(expected, result) def test_owner_trait(self): # Test for owner prefix traits. traits = ot.get_traits('OWNER') self.assertEqual(["OWNER_CYBORG", "OWNER_NOVA"], traits) ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.702625 os-traits-3.1.0/os_traits.egg-info/0000775000175000017500000000000000000000000017164 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975400.0 os-traits-3.1.0/os_traits.egg-info/PKG-INFO0000664000175000017500000000347000000000000020265 0ustar00zuulzuul00000000000000Metadata-Version: 1.2 Name: os-traits Version: 3.1.0 Summary: A library containing standardized trait strings Home-page: https://docs.openstack.org/os-traits/latest/ Author: OpenStack Author-email: openstack-discuss@lists.openstack.org License: UNKNOWN Description: ========= os-traits ========= `os-traits` is an OpenStack library containing standardized trait strings. Traits are strings that represent a feature of a resource provider hosted by the Placement_ service. This library contains the catalog of constants that have been standardized in the OpenStack community to refer to a particular hardware, virtualization, storage, network, or device trait. * Free software: Apache license * Documentation: https://docs.openstack.org/os-traits/latest/ * Source: http://opendev.org/openstack/os-traits * Bugs: https://launchpad.net/placement * Release Notes: https://docs.openstack.org/releasenotes/os-traits .. _Placement: https://docs.openstack.org/placement/latest/ Platform: UNKNOWN Classifier: Environment :: OpenStack Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: Apache Software License Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: CPython Requires-Python: >=3.8 ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975400.0 os-traits-3.1.0/os_traits.egg-info/SOURCES.txt0000664000175000017500000000443600000000000021057 0ustar00zuulzuul00000000000000.stestr.conf .zuul.yaml AUTHORS CONTRIBUTING.rst ChangeLog HACKING.rst LICENSE MANIFEST.in README.rst pyproject.toml requirements.txt setup.cfg setup.py test-requirements.txt tox.ini doc/requirements.txt doc/ext/traits.py doc/source/conf.py doc/source/index.rst doc/source/contributor/index.rst doc/source/install/index.rst doc/source/reference/index.rst doc/source/user/index.rst os_traits/__init__.py os_traits.egg-info/PKG-INFO os_traits.egg-info/SOURCES.txt os_traits.egg-info/dependency_links.txt os_traits.egg-info/not-zip-safe os_traits.egg-info/pbr.json os_traits.egg-info/requires.txt os_traits.egg-info/top_level.txt os_traits/compute/__init__.py os_traits/compute/arch.py os_traits/compute/config_drive.py os_traits/compute/ephemeral.py os_traits/compute/firmware.py os_traits/compute/graphics.py os_traits/compute/image.py os_traits/compute/migrate.py os_traits/compute/net.py os_traits/compute/security.py os_traits/compute/status.py os_traits/compute/storage.py os_traits/compute/viommu.py os_traits/compute/volume.py os_traits/hw/__init__.py os_traits/hw/arch.py os_traits/hw/cpu/__init__.py os_traits/hw/cpu/aarch64.py os_traits/hw/cpu/amd.py os_traits/hw/cpu/ppc64le/__init__.py os_traits/hw/cpu/x86/__init__.py os_traits/hw/cpu/x86/amd.py os_traits/hw/cpu/x86/intel.py os_traits/hw/gpu/__init__.py os_traits/hw/gpu/api.py os_traits/hw/gpu/cuda.py os_traits/hw/gpu/max_display_heads.py os_traits/hw/gpu/resolution.py os_traits/hw/nic/__init__.py os_traits/hw/nic/accel.py os_traits/hw/nic/dcb.py os_traits/hw/nic/offload.py os_traits/hw/nic/sriov.py os_traits/hw/numa/__init__.py os_traits/misc/__init__.py os_traits/owner/__init__.py os_traits/storage/__init__.py os_traits/storage/disk.py os_traits/tests/__init__.py os_traits/tests/base.py os_traits/tests/test_cuda.py os_traits/tests/test_os_traits.py releasenotes/notes/.placeholder releasenotes/notes/add-owner-trait-f33e0e038961cbbd.yaml releasenotes/notes/add-suffix-get_traits-d1d91edcf7f65188.yaml releasenotes/notes/drop-python2-support-d11499973c50713b.yaml releasenotes/source/conf.py releasenotes/source/index.rst releasenotes/source/pike.rst releasenotes/source/queens.rst releasenotes/source/rocky.rst releasenotes/source/stein.rst releasenotes/source/unreleased.rst releasenotes/source/_static/.placeholder releasenotes/source/_templates/.placeholder././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975400.0 os-traits-3.1.0/os_traits.egg-info/dependency_links.txt0000664000175000017500000000000100000000000023232 0ustar00zuulzuul00000000000000 ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975400.0 os-traits-3.1.0/os_traits.egg-info/not-zip-safe0000664000175000017500000000000100000000000021412 0ustar00zuulzuul00000000000000 ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975400.0 os-traits-3.1.0/os_traits.egg-info/pbr.json0000664000175000017500000000005600000000000020643 0ustar00zuulzuul00000000000000{"git_version": "43e81cc", "is_release": true}././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975400.0 os-traits-3.1.0/os_traits.egg-info/requires.txt0000664000175000017500000000001300000000000021556 0ustar00zuulzuul00000000000000pbr>=3.0.0 ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975400.0 os-traits-3.1.0/os_traits.egg-info/top_level.txt0000664000175000017500000000001200000000000021707 0ustar00zuulzuul00000000000000os_traits ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/pyproject.toml0000664000175000017500000000014400000000000016376 0ustar00zuulzuul00000000000000[build-system] requires = ["pbr>=5.7.0", "setuptools>=64.0.0", "wheel"] build-backend = "pbr.build" ././@PaxHeader0000000000000000000000000000003400000000000011452 xustar000000000000000028 mtime=1721975400.6986253 os-traits-3.1.0/releasenotes/0000775000175000017500000000000000000000000016154 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.706625 os-traits-3.1.0/releasenotes/notes/0000775000175000017500000000000000000000000017304 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/releasenotes/notes/.placeholder0000664000175000017500000000000000000000000021555 0ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/releasenotes/notes/add-owner-trait-f33e0e038961cbbd.yaml0000664000175000017500000000034100000000000025460 0ustar00zuulzuul00000000000000--- features: - | Add owner trait of ``OWNER_NOVA`` and ``OWNER_CYBORG`` for resource providers in order to solve the shared resource class(such as ``VGPU``) problem by each service recording that they created. ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/releasenotes/notes/add-suffix-get_traits-d1d91edcf7f65188.yaml0000664000175000017500000000030100000000000026672 0ustar00zuulzuul00000000000000--- features: - | Added a new optional parameter ``suffix`` to function ``get_traits``. This new parameter allows filtering the list of traits returned by the ending of the name. ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/releasenotes/notes/drop-python2-support-d11499973c50713b.yaml0000664000175000017500000000011600000000000026246 0ustar00zuulzuul00000000000000--- upgrade: - | Python 2 is no longer supported. Python 3 is required. ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.706625 os-traits-3.1.0/releasenotes/source/0000775000175000017500000000000000000000000017454 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.706625 os-traits-3.1.0/releasenotes/source/_static/0000775000175000017500000000000000000000000021102 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/releasenotes/source/_static/.placeholder0000664000175000017500000000000000000000000023353 0ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.706625 os-traits-3.1.0/releasenotes/source/_templates/0000775000175000017500000000000000000000000021611 5ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/releasenotes/source/_templates/.placeholder0000664000175000017500000000000000000000000024062 0ustar00zuulzuul00000000000000././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/releasenotes/source/conf.py0000664000175000017500000000416600000000000020762 0ustar00zuulzuul00000000000000# Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. # # os-traits Release Notes documentation build configuration file # # Refer to the Sphinx documentation for advice on configuring this file: # # http://www.sphinx-doc.org/en/stable/config.html # -- General configuration ------------------------------------------------ # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'openstackdocstheme', 'reno.sphinxext', ] # openstackdocstheme options openstackdocs_repo_name = 'openstack/os-traits' openstackdocs_auto_name = False openstackdocs_bug_project = 'os-traits' # The suffix of source filenames. source_suffix = '.rst' # The master toctree document. master_doc = 'index' # General information about the project. project = 'os-traits Release Notes' copyright = '2017, OpenStack Foundation' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. # The full version, including alpha/beta/rc tags. release = '' # The short X.Y version. version = '' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = [] # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'native' # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'openstackdocs' ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/releasenotes/source/index.rst0000664000175000017500000000023100000000000021311 0ustar00zuulzuul00000000000000======================= os_traits Release Notes ======================= .. toctree:: :maxdepth: 1 unreleased stein rocky queens pike ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/releasenotes/source/pike.rst0000664000175000017500000000017200000000000021136 0ustar00zuulzuul00000000000000========================= Pike Series Release Notes ========================= .. release-notes:: :branch: stable/pike ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/releasenotes/source/queens.rst0000664000175000017500000000022300000000000021503 0ustar00zuulzuul00000000000000=================================== Queens Series Release Notes =================================== .. release-notes:: :branch: stable/queens ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/releasenotes/source/rocky.rst0000664000175000017500000000017600000000000021341 0ustar00zuulzuul00000000000000========================== Rocky Series Release Notes ========================== .. release-notes:: :branch: stable/rocky ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/releasenotes/source/stein.rst0000664000175000017500000000017600000000000021334 0ustar00zuulzuul00000000000000========================== Stein Series Release Notes ========================== .. release-notes:: :branch: stable/stein ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/releasenotes/source/unreleased.rst0000664000175000017500000000016000000000000022332 0ustar00zuulzuul00000000000000============================== Current Series Release Notes ============================== .. release-notes:: ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/requirements.txt0000664000175000017500000000003000000000000016740 0ustar00zuulzuul00000000000000pbr>=3.0.0 # Apache-2.0 ././@PaxHeader0000000000000000000000000000003300000000000011451 xustar000000000000000027 mtime=1721975400.706625 os-traits-3.1.0/setup.cfg0000664000175000017500000000157400000000000015313 0ustar00zuulzuul00000000000000[metadata] name = os-traits summary = A library containing standardized trait strings description_file = README.rst author = OpenStack author_email = openstack-discuss@lists.openstack.org home_page = https://docs.openstack.org/os-traits/latest/ python_requires = >=3.8 classifier = Environment :: OpenStack Intended Audience :: Information Technology Intended Audience :: System Administrators License :: OSI Approved :: Apache Software License Operating System :: POSIX :: Linux Programming Language :: Python Programming Language :: Python :: 3 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 Programming Language :: Python :: 3.11 Programming Language :: Python :: 3 :: Only Programming Language :: Python :: Implementation :: CPython [files] packages = os_traits [egg_info] tag_build = tag_date = 0 ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/setup.py0000664000175000017500000000127100000000000015176 0ustar00zuulzuul00000000000000# Copyright (c) 2013 Hewlett-Packard Development Company, L.P. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. import setuptools setuptools.setup( setup_requires=['pbr>=2.0.0'], pbr=True) ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/test-requirements.txt0000664000175000017500000000026300000000000017725 0ustar00zuulzuul00000000000000hacking>=6.1.0,<6.2.0 # Apache-2.0 coverage>=4.4.1 # Apache-2.0 oslotest>=3.2.0 # Apache-2.0 stestr>=2.0.0 # Apache-2.0 testscenarios>=0.4 # Apache-2.0/BSD testtools>=2.2.0 # MIT ././@PaxHeader0000000000000000000000000000002600000000000011453 xustar000000000000000022 mtime=1721975372.0 os-traits-3.1.0/tox.ini0000664000175000017500000000250300000000000014776 0ustar00zuulzuul00000000000000[tox] minversion = 3.18.0 envlist = py3,pep8 ignore_basepython_conflict = true [testenv] basepython = python3 allowlist_externals = rm deps = -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} -r{toxinidir}/test-requirements.txt commands = stestr run --slowest {posargs} [testenv:pep8] commands = flake8 {posargs} [testenv:venv] commands = {posargs} [testenv:docs] deps = -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} -r{toxinidir}/doc/requirements.txt commands = rm -rf doc/build sphinx-build -W -b html doc/source doc/build/html [testenv:pdf-docs] deps = {[testenv:docs]deps} allowlist_externals = make commands = sphinx-build -W -b latex doc/source doc/build/pdf make -C doc/build/pdf [testenv:releasenotes] deps = {[testenv:docs]deps} commands = rm -rf releasenotes/build sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html [testenv:debug] commands = oslo_debug_helper {posargs} [flake8] # E123, E125 skipped as they are invalid PEP-8. # # W504 skipped since you must choose either W503 or W504 (they conflict) show-source = True ignore = E123,E125,H405,W504 builtins = _ exclude=.venv,.git,.tox,dist,*lib/python*,*egg,build