././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5570943 os_traits-3.9.0/0000775000175000017500000000000015242123166012356 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4023552 os_traits-3.9.0/.stestr.conf0000664000175000017500000000006215242123110014612 0ustar00zuulzuul[DEFAULT] test_path=./os_traits/tests top_dir=./ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4033542 os_traits-3.9.0/.zuul.yaml0000664000175000017500000000030315242123110014300 0ustar00zuulzuul--- - project: templates: - publish-openstack-docs-pti - check-requirements - openstack-python3-jobs - openstack-python3-next-jobs - release-notes-jobs-python3 ././@PaxHeader0000000000000000000000000000003100000000000010207 xustar0025 mtime=1787340405.4511 os_traits-3.9.0/AUTHORS0000664000175000017500000000442115242123165013426 0ustar00zuulzuulAdam Spiers Andreas Jaeger Artom Lifshitz Balazs Gibizer Chandan Kumar (raukadah) 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 Michael Still 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 antia caoyuan dineshbhor ericxiett gaozx jacky06 jianghua wang melissaml qingszhao songwenping ya.wang ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4033542 os_traits-3.9.0/CONTRIBUTING.rst0000664000175000017500000000135715242123110015012 0ustar00zuulzuulIf 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 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.4291012 os_traits-3.9.0/ChangeLog0000664000175000017500000001520315242123165014130 0ustar00zuulzuulCHANGES ======= 3.9.0 ----- * Add HW\_NVME capability traits * zuul: Use openstack-python3-next-jobs template 3.8.0 ----- * Add a new trait for Intel TDX 3.7.0 ----- * Deprecate version attribute * Add a new trait for AMD SEV-SNP 3.6.0 ----- * CPU: add traits for new X86 feature "AMX" * Remove MANIFEST.in * Drop basepython 3.5.0 ----- * Replace UPPER\_CONSTRAINTS\_FILE 3.4.0 ----- * Add HW\_PCI\_ONE\_TIME\_USE trait * Add traits for sound and USB devices on instances 3.3.0 ----- * Add vTPM secret policy traits * Add 'HW\_PCI\_LIVE\_MIGRATABLE' * Update python classifier as per the 2025.1 cycle testing runtime * Drop unnecessary 'x' bit from doc config file 3.2.0 ----- * Add support for hw\_vif\_model igb image property 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 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4033542 os_traits-3.9.0/HACKING.rst0000664000175000017500000000021415242123110014136 0ustar00zuulzuulos-traits Style Commandments ============================ Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4033542 os_traits-3.9.0/LICENSE0000664000175000017500000002363715242123110013363 0ustar00zuulzuul 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. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5570943 os_traits-3.9.0/PKG-INFO0000644000175000017500000000353215242123166013454 0ustar00zuulzuulMetadata-Version: 2.4 Name: os-traits Version: 3.9.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 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.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: CPython Requires-Python: >=3.9 License-File: LICENSE Requires-Dist: pbr>=3.0.0 Dynamic: author Dynamic: author-email Dynamic: classifier Dynamic: description Dynamic: home-page Dynamic: license-file Dynamic: requires-dist Dynamic: requires-python Dynamic: summary ========= 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/ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4033542 os_traits-3.9.0/README.rst0000664000175000017500000000130415242123110014030 0ustar00zuulzuul========= 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/ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5350957 os_traits-3.9.0/doc/0000775000175000017500000000000015242123166013123 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5350957 os_traits-3.9.0/doc/ext/0000775000175000017500000000000015242123166013723 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4043531 os_traits-3.9.0/doc/ext/traits.py0000664000175000017500000000265215242123110015575 0ustar00zuulzuul# 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, } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4043531 os_traits-3.9.0/doc/requirements.txt0000664000175000017500000000014415242123110016373 0ustar00zuulzuulsphinx>=2.1.1 # BSD openstackdocstheme>=2.2.1 # Apache-2.0 # releasenotes reno>=3.1.0 # Apache-2.0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5360956 os_traits-3.9.0/doc/source/0000775000175000017500000000000015242123166014423 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4043531 os_traits-3.9.0/doc/source/conf.py0000664000175000017500000000466415242123110015721 0ustar00zuulzuul# 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'), ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5360956 os_traits-3.9.0/doc/source/contributor/0000775000175000017500000000000015242123166016775 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4043531 os_traits-3.9.0/doc/source/contributor/index.rst0000664000175000017500000000215415242123110020625 0ustar00zuulzuul============ 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 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4043531 os_traits-3.9.0/doc/source/index.rst0000664000175000017500000000126515242123110016255 0ustar00zuulzuul========= 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 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5360956 os_traits-3.9.0/doc/source/install/0000775000175000017500000000000015242123166016071 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4043531 os_traits-3.9.0/doc/source/install/index.rst0000664000175000017500000000030415242123110017714 0ustar00zuulzuul============ Installation ============ At the command line:: $ pip install os-traits Or, if you have virtualenvwrapper installed:: $ mkvirtualenv os-traits $ pip install os-traits ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5370955 os_traits-3.9.0/doc/source/reference/0000775000175000017500000000000015242123166016361 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4043531 os_traits-3.9.0/doc/source/reference/index.rst0000664000175000017500000000715515242123110020217 0ustar00zuulzuul========= 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. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5370955 os_traits-3.9.0/doc/source/user/0000775000175000017500000000000015242123166015401 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4043531 os_traits-3.9.0/doc/source/user/index.rst0000664000175000017500000000277415242123110017241 0ustar00zuulzuul===== 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'] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5380955 os_traits-3.9.0/os_traits/0000775000175000017500000000000015242123166014365 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340360.405352 os_traits-3.9.0/os_traits/__init__.py0000664000175000017500000001400415242123110016462 0ustar00zuulzuul# -*- 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 warnings import pbr.version THIS_NAME = __name__ THIS_LIB = sys.modules[THIS_NAME] TEST_DIR = "%s.tests" % THIS_NAME def __getattr__(name: str) -> str: if name == '__version__': warnings.warn( "Accessing os_traits.__version__ is deprecated and will be " "removed in a future release. Use importlib.metadata instead: " "importlib.metadata.version('os-traits')", DeprecationWarning, stacklevel=2, ) return pbr.version.VersionInfo(THIS_NAME).version_string() raise AttributeError(f"module 'os_traits' has no attribute {name!r}") # 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()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340405.544095 os_traits-3.9.0/os_traits/compute/0000775000175000017500000000000015242123166016041 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340360.405352 os_traits-3.9.0/os_traits/compute/__init__.py0000664000175000017500000000473515242123110020150 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340360.405352 os_traits-3.9.0/os_traits/compute/arch.py0000664000175000017500000000154015242123110017315 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340360.405352 os_traits-3.9.0/os_traits/compute/config_drive.py0000664000175000017500000000113415242123110021035 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340360.405352 os_traits-3.9.0/os_traits/compute/ephemeral.py0000664000175000017500000000124215242123110020341 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4063513 os_traits-3.9.0/os_traits/compute/firmware.py0000664000175000017500000000124415242123110020215 0ustar00zuulzuul# 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4063513 os_traits-3.9.0/os_traits/compute/graphics.py0000664000175000017500000000164515242123110020206 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4063513 os_traits-3.9.0/os_traits/compute/image.py0000664000175000017500000000232115242123110017460 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4063513 os_traits-3.9.0/os_traits/compute/migrate.py0000664000175000017500000000135215242123110020031 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4063513 os_traits-3.9.0/os_traits/compute/net.py0000664000175000017500000000260415242123110017170 0ustar00zuulzuul# -*- 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', 'VIF_MODEL_IGB', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4063513 os_traits-3.9.0/os_traits/compute/security.py0000664000175000017500000000264715242123110020260 0ustar00zuulzuul# -*- 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 the `user` vTPM secret policy 'TPM_SECRET_SECURITY_USER', # support for the `host` vTPM secret policy 'TPM_SECRET_SECURITY_HOST', # support for the `deployment` vTPM secret policy 'TPM_SECRET_SECURITY_DEPLOYMENT', # 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' ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4063513 os_traits-3.9.0/os_traits/compute/sound.py0000664000175000017500000000166515242123110017540 0ustar00zuulzuul# -*- 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_sound_model" # image metadata property. These are used by the nova libvirt driver and # are listed at https://libvirt.org/formatdomain.html#sound-devices 'MODEL_SB16', 'MODEL_ES1370', 'MODEL_PCSPK', 'MODEL_AC97', 'MODEL_ICH6', 'MODEL_ICH9', 'MODEL_USB', 'MODEL_VIRTIO' ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4063513 os_traits-3.9.0/os_traits/compute/status.py0000664000175000017500000000121615242123110017723 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4063513 os_traits-3.9.0/os_traits/compute/storage.py0000664000175000017500000000174715242123110020055 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4073503 os_traits-3.9.0/os_traits/compute/usb.py0000664000175000017500000000171215242123110017172 0ustar00zuulzuul# -*- 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_usb_model" # image metadata property. These are used by the nova libvirt driver # however we have decided for now to not support the other older options # for performance and support reasons. Options are documented at # https://libvirt.org/formatdomain.html#controllers 'MODEL_QEMU_XHCI', 'MODEL_NEC_XHCI' ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4073503 os_traits-3.9.0/os_traits/compute/viommu.py0000664000175000017500000000157315242123110017722 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4073503 os_traits-3.9.0/os_traits/compute/volume.py0000664000175000017500000000170615242123110017713 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340405.544095 os_traits-3.9.0/os_traits/hw/0000775000175000017500000000000015242123166015003 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4073503 os_traits-3.9.0/os_traits/hw/__init__.py0000664000175000017500000000000015242123110017067 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4073503 os_traits-3.9.0/os_traits/hw/arch.py0000664000175000017500000000233115242123110016256 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340405.545095 os_traits-3.9.0/os_traits/hw/cpu/0000775000175000017500000000000015242123166015572 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4073503 os_traits-3.9.0/os_traits/hw/cpu/__init__.py0000664000175000017500000000207615242123110017675 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4083493 os_traits-3.9.0/os_traits/hw/cpu/aarch64.py0000664000175000017500000000436115242123110017365 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4083493 os_traits-3.9.0/os_traits/hw/cpu/amd.py0000664000175000017500000000266515242123110016703 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340405.545095 os_traits-3.9.0/os_traits/hw/cpu/ppc64le/0000775000175000017500000000000015242123166017047 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4083493 os_traits-3.9.0/os_traits/hw/cpu/ppc64le/__init__.py0000664000175000017500000000114415242123110021145 0ustar00zuulzuul# -*- 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' ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5460951 os_traits-3.9.0/os_traits/hw/cpu/x86/0000775000175000017500000000000015242123166016217 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4083493 os_traits-3.9.0/os_traits/hw/cpu/x86/__init__.py0000664000175000017500000000700415242123110020316 0ustar00zuulzuul# -*- 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', # ref: https://en.wikipedia.org/wiki/Advanced_Matrix_Extensions 'AMXBF16', 'AMXINT8', 'AMXTILE', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4093482 os_traits-3.9.0/os_traits/hw/cpu/x86/amd.py0000664000175000017500000000162715242123110017325 0ustar00zuulzuul# -*- 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', 'SEV_SNP', # 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4093482 os_traits-3.9.0/os_traits/hw/cpu/x86/intel.py0000664000175000017500000000175015242123110017674 0ustar00zuulzuul# -*- 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', # ref: https://en.wikipedia.org/wiki/Trust_Domain_Extensions 'TDX', ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340405.547095 os_traits-3.9.0/os_traits/hw/gpu/0000775000175000017500000000000015242123166015576 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4093482 os_traits-3.9.0/os_traits/hw/gpu/__init__.py0000664000175000017500000000000015242123110017662 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4093482 os_traits-3.9.0/os_traits/hw/gpu/api.py0000664000175000017500000000342515242123110016712 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4103475 os_traits-3.9.0/os_traits/hw/gpu/cuda.py0000664000175000017500000001274215242123110017057 0ustar00zuulzuul# -*- 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) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4103475 os_traits-3.9.0/os_traits/hw/gpu/max_display_heads.py0000664000175000017500000000125415242123110021615 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4103475 os_traits-3.9.0/os_traits/hw/gpu/resolution.py0000664000175000017500000000200115242123110020331 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340405.549095 os_traits-3.9.0/os_traits/hw/nic/0000775000175000017500000000000015242123166015554 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4103475 os_traits-3.9.0/os_traits/hw/nic/__init__.py0000664000175000017500000000162315242123110017654 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4103475 os_traits-3.9.0/os_traits/hw/nic/accel.py0000664000175000017500000000150215242123110017160 0ustar00zuulzuul# -*- 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 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4103475 os_traits-3.9.0/os_traits/hw/nic/dcb.py0000664000175000017500000000137515242123110016651 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4103475 os_traits-3.9.0/os_traits/hw/nic/offload.py0000664000175000017500000000256715242123110017537 0ustar00zuulzuul# -*- 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 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4103475 os_traits-3.9.0/os_traits/hw/nic/sriov.py0000664000175000017500000000215615242123110017261 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340405.549095 os_traits-3.9.0/os_traits/hw/numa/0000775000175000017500000000000015242123166015743 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4103475 os_traits-3.9.0/os_traits/hw/numa/__init__.py0000664000175000017500000000163415242123110020045 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340405.549095 os_traits-3.9.0/os_traits/hw/nvme/0000775000175000017500000000000015242123166015750 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4103475 os_traits-3.9.0/os_traits/hw/nvme/__init__.py0000664000175000017500000000134415242123110020050 0ustar00zuulzuul# -*- 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 = [ 'CES', # Crypto Erase Sanitize (sanicap bit 0) 'BES', # Block Erase Sanitize (sanicap bit 1) 'WZS', # Write Zeroes Supported (oncs bit 3) ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340405.549095 os_traits-3.9.0/os_traits/hw/pci/0000775000175000017500000000000015242123166015556 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4113464 os_traits-3.9.0/os_traits/hw/pci/__init__.py0000664000175000017500000000176615242123110017666 0ustar00zuulzuul# -*- 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 PCI devices TRAITS = [ # PCI device can be live-migrated from one compute node to another # with the same device. 'LIVE_MIGRATABLE', # PCI device lifecycle is being managed as "one time use". Compute manager # will set reserved=total during assignment and leave it as such during # deallocation, requiring an external agent to un-reserve it before it # can be used again. 'ONE_TIME_USE', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5500948 os_traits-3.9.0/os_traits/misc/0000775000175000017500000000000015242123166015320 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4113464 os_traits-3.9.0/os_traits/misc/__init__.py0000664000175000017500000000335715242123110017426 0ustar00zuulzuul# -*- 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5500948 os_traits-3.9.0/os_traits/owner/0000775000175000017500000000000015242123166015517 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4113464 os_traits-3.9.0/os_traits/owner/__init__.py0000664000175000017500000000127115242123110017616 0ustar00zuulzuul# -*- 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' ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5510948 os_traits-3.9.0/os_traits/storage/0000775000175000017500000000000015242123166016031 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4113464 os_traits-3.9.0/os_traits/storage/__init__.py0000664000175000017500000000000015242123110020115 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4113464 os_traits-3.9.0/os_traits/storage/disk.py0000664000175000017500000000120515242123110017320 0ustar00zuulzuul# -*- 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 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5520947 os_traits-3.9.0/os_traits/tests/0000775000175000017500000000000015242123166015527 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4113464 os_traits-3.9.0/os_traits/tests/__init__.py0000664000175000017500000000000015242123110017613 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4113464 os_traits-3.9.0/os_traits/tests/base.py0000664000175000017500000000143215242123110017000 0ustar00zuulzuul# -*- 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.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4123454 os_traits-3.9.0/os_traits/tests/test_cuda.py0000664000175000017500000000275415242123110020051 0ustar00zuulzuul# -*- 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) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4123454 os_traits-3.9.0/os_traits/tests/test_os_traits.py0000664000175000017500000001256615242123110021146 0ustar00zuulzuul# -*- 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.hw import nvme 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) self.assertEqual(nvme.CES, ot.HW_NVME_CES) 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_hw_nvme_traits(self): traits = ot.get_traits('HW_NVME') self.assertIn('HW_NVME_CES', traits) self.assertIn('HW_NVME_BES', traits) self.assertIn('HW_NVME_WZS', traits) self.assertEqual(3, len(traits)) def test_owner_trait(self): # Test for owner prefix traits. traits = ot.get_traits('OWNER') self.assertEqual(["OWNER_CYBORG", "OWNER_NOVA"], traits) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5400953 os_traits-3.9.0/os_traits.egg-info/0000775000175000017500000000000015242123166016057 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.4560997 os_traits-3.9.0/os_traits.egg-info/PKG-INFO0000644000175000017500000000353215242123165017154 0ustar00zuulzuulMetadata-Version: 2.4 Name: os-traits Version: 3.9.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 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.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: CPython Requires-Python: >=3.9 License-File: LICENSE Requires-Dist: pbr>=3.0.0 Dynamic: author Dynamic: author-email Dynamic: classifier Dynamic: description Dynamic: home-page Dynamic: license-file Dynamic: requires-dist Dynamic: requires-python Dynamic: summary ========= 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/ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5180964 os_traits-3.9.0/os_traits.egg-info/SOURCES.txt0000664000175000017500000000501515242123166017744 0ustar00zuulzuul.stestr.conf .zuul.yaml AUTHORS CONTRIBUTING.rst ChangeLog HACKING.rst LICENSE 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/sound.py os_traits/compute/status.py os_traits/compute/storage.py os_traits/compute/usb.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/hw/nvme/__init__.py os_traits/hw/pci/__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-hw-nvme-capability-traits-266f6cf5cbb742f3.yaml releasenotes/notes/add-owner-trait-f33e0e038961cbbd.yaml releasenotes/notes/add-suffix-get_traits-d1d91edcf7f65188.yaml releasenotes/notes/deprecate-version-attribute-6e9a41e1eee53d19.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././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.4570997 os_traits-3.9.0/os_traits.egg-info/dependency_links.txt0000664000175000017500000000000115242123165022124 0ustar00zuulzuul ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.4570997 os_traits-3.9.0/os_traits.egg-info/not-zip-safe0000664000175000017500000000000115242123165020304 0ustar00zuulzuul ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1787340405.469099 os_traits-3.9.0/os_traits.egg-info/pbr.json0000664000175000017500000000005615242123165017535 0ustar00zuulzuul{"git_version": "d4ac0c1", "is_release": true}././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.4570997 os_traits-3.9.0/os_traits.egg-info/requires.txt0000664000175000017500000000001315242123165020450 0ustar00zuulzuulpbr>=3.0.0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.4570997 os_traits-3.9.0/os_traits.egg-info/top_level.txt0000664000175000017500000000001215242123165020601 0ustar00zuulzuulos_traits ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4123454 os_traits-3.9.0/pyproject.toml0000664000175000017500000000014415242123110015256 0ustar00zuulzuul[build-system] requires = ["pbr>=5.7.0", "setuptools>=64.0.0", "wheel"] build-backend = "pbr.build" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5300958 os_traits-3.9.0/releasenotes/0000775000175000017500000000000015242123166015047 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5540946 os_traits-3.9.0/releasenotes/notes/0000775000175000017500000000000015242123166016177 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4123454 os_traits-3.9.0/releasenotes/notes/.placeholder0000664000175000017500000000000015242123110020435 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4123454 os_traits-3.9.0/releasenotes/notes/add-hw-nvme-capability-traits-266f6cf5cbb742f3.yaml0000664000175000017500000000074015242123110027105 0ustar00zuulzuul--- features: - | Add ``HW_NVME_CES`` (Crypto Erase Sanitize), ``HW_NVME_BES`` (Block Erase Sanitize), and ``HW_NVME_WZS`` (Write Zeroes Supported) traits under a new ``HW_NVME`` namespace. These traits allow Cyborg's generic NVMe driver to report NVMe device capabilities to Placement based on the controller's ``sanicap`` and ``oncs`` register fields, enabling operators to match cleanup policies to hardware capabilities during device scheduling. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4123454 os_traits-3.9.0/releasenotes/notes/add-owner-trait-f33e0e038961cbbd.yaml0000664000175000017500000000034115242123110024340 0ustar00zuulzuul--- 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. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4123454 os_traits-3.9.0/releasenotes/notes/add-suffix-get_traits-d1d91edcf7f65188.yaml0000664000175000017500000000030115242123110025552 0ustar00zuulzuul--- 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. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4133444 os_traits-3.9.0/releasenotes/notes/deprecate-version-attribute-6e9a41e1eee53d19.yaml0000664000175000017500000000031115242123110026765 0ustar00zuulzuul--- deprecations: - | The ``os_traits.__version__`` attribute has been deprecated for removal. Prefer use of ``importlib.metadata`` to inspect version information for installed packages. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4133444 os_traits-3.9.0/releasenotes/notes/drop-python2-support-d11499973c50713b.yaml0000664000175000017500000000011615242123110025126 0ustar00zuulzuul--- upgrade: - | Python 2 is no longer supported. Python 3 is required. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5560944 os_traits-3.9.0/releasenotes/source/0000775000175000017500000000000015242123166016347 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5560944 os_traits-3.9.0/releasenotes/source/_static/0000775000175000017500000000000015242123166017775 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4133444 os_traits-3.9.0/releasenotes/source/_static/.placeholder0000664000175000017500000000000015242123110022233 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5560944 os_traits-3.9.0/releasenotes/source/_templates/0000775000175000017500000000000015242123166020504 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4133444 os_traits-3.9.0/releasenotes/source/_templates/.placeholder0000664000175000017500000000000015242123110022742 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4133444 os_traits-3.9.0/releasenotes/source/conf.py0000664000175000017500000000416615242123110017642 0ustar00zuulzuul# 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' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4133444 os_traits-3.9.0/releasenotes/source/index.rst0000664000175000017500000000023115242123110020171 0ustar00zuulzuul======================= os_traits Release Notes ======================= .. toctree:: :maxdepth: 1 unreleased stein rocky queens pike ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4133444 os_traits-3.9.0/releasenotes/source/pike.rst0000664000175000017500000000017215242123110020016 0ustar00zuulzuul========================= Pike Series Release Notes ========================= .. release-notes:: :branch: stable/pike ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4133444 os_traits-3.9.0/releasenotes/source/queens.rst0000664000175000017500000000022315242123110020363 0ustar00zuulzuul=================================== Queens Series Release Notes =================================== .. release-notes:: :branch: stable/queens ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4133444 os_traits-3.9.0/releasenotes/source/rocky.rst0000664000175000017500000000017615242123110020221 0ustar00zuulzuul========================== Rocky Series Release Notes ========================== .. release-notes:: :branch: stable/rocky ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4133444 os_traits-3.9.0/releasenotes/source/stein.rst0000664000175000017500000000017615242123110020214 0ustar00zuulzuul========================== Stein Series Release Notes ========================== .. release-notes:: :branch: stable/stein ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4133444 os_traits-3.9.0/releasenotes/source/unreleased.rst0000664000175000017500000000016015242123110021212 0ustar00zuulzuul============================== Current Series Release Notes ============================== .. release-notes:: ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4133444 os_traits-3.9.0/requirements.txt0000664000175000017500000000003015242123110015620 0ustar00zuulzuulpbr>=3.0.0 # Apache-2.0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340405.5570943 os_traits-3.9.0/setup.cfg0000664000175000017500000000157515242123166014207 0ustar00zuulzuul[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.9 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.9 Programming Language :: Python :: 3.10 Programming Language :: Python :: 3.11 Programming Language :: Python :: 3.12 Programming Language :: Python :: 3 :: Only Programming Language :: Python :: Implementation :: CPython [files] packages = os_traits [egg_info] tag_build = tag_date = 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4143436 os_traits-3.9.0/setup.py0000664000175000017500000000127115242123110014056 0ustar00zuulzuul# 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) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4143436 os_traits-3.9.0/test-requirements.txt0000664000175000017500000000026315242123110016605 0ustar00zuulzuulhacking>=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 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1787340360.4143436 os_traits-3.9.0/tox.ini0000664000175000017500000000241015242123110013653 0ustar00zuulzuul[tox] minversion = 3.18.0 envlist = py3,pep8 [testenv] allowlist_externals = rm deps = -c{env:TOX_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:TOX_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