././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1781023621.154158 os_traits-3.8.0/0000775000175000017500000000000015212041605012347 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/.stestr.conf0000664000175000017500000000006215212041543014617 0ustar00zuulzuul[DEFAULT] test_path=./os_traits/tests top_dir=./ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/.zuul.yaml0000664000175000017500000000023215212041543014306 0ustar00zuulzuul- project: templates: - publish-openstack-docs-pti - check-requirements - openstack-python3-jobs - release-notes-jobs-python3 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023621.0 os_traits-3.8.0/AUTHORS0000664000175000017500000000434315212041605013423 0ustar00zuulzuulAdam Spiers Andreas Jaeger Artom Lifshitz Balazs Gibizer Charles Short Chris Dent Corey Bryant Dan Smith Danylo Vodopianov Dmitrii Shcherbakov Doug Hellmann EdLeafe Edan David Eric Fried Eric Fried Ghanshyam Mann Jan Hartkopf Jay Pipes Jianghua Wang Jonathan Race Kashyap Chamarthy Kevin Zhao Konstantinos Samaras-Tsakiris Lee Yarwood Lin Yang Matt Riedemann Michael Davies 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 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/CONTRIBUTING.rst0000664000175000017500000000135715212041543015017 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 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023621.0 os_traits-3.8.0/ChangeLog0000664000175000017500000001504315212041605014124 0ustar00zuulzuulCHANGES ======= 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 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/HACKING.rst0000664000175000017500000000021415212041543014143 0ustar00zuulzuulos-traits Style Commandments ============================ Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/LICENSE0000664000175000017500000002363715212041543013370 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. ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1781023621.154158 os_traits-3.8.0/PKG-INFO0000644000175000017500000000353215212041605013445 0ustar00zuulzuulMetadata-Version: 2.4 Name: os-traits Version: 3.8.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/ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/README.rst0000664000175000017500000000130415212041543014035 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=1781023621.1461575 os_traits-3.8.0/doc/0000775000175000017500000000000015212041605013114 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1781023621.1461575 os_traits-3.8.0/doc/ext/0000775000175000017500000000000015212041605013714 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/doc/ext/traits.py0000664000175000017500000000265215212041543015602 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, } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/doc/requirements.txt0000664000175000017500000000014415212041543016400 0ustar00zuulzuulsphinx>=2.1.1 # BSD openstackdocstheme>=2.2.1 # Apache-2.0 # releasenotes reno>=3.1.0 # Apache-2.0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1781023621.1461575 os_traits-3.8.0/doc/source/0000775000175000017500000000000015212041605014414 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/doc/source/conf.py0000664000175000017500000000466415212041543015726 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=1781023621.1461575 os_traits-3.8.0/doc/source/contributor/0000775000175000017500000000000015212041605016766 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/doc/source/contributor/index.rst0000664000175000017500000000215415212041543020632 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 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/doc/source/index.rst0000664000175000017500000000126515212041543016262 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=1781023621.1471577 os_traits-3.8.0/doc/source/install/0000775000175000017500000000000015212041605016062 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/doc/source/install/index.rst0000664000175000017500000000030415212041543017721 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=1781023621.1471577 os_traits-3.8.0/doc/source/reference/0000775000175000017500000000000015212041605016352 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/doc/source/reference/index.rst0000664000175000017500000000715515212041543020224 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=1781023621.1471577 os_traits-3.8.0/doc/source/user/0000775000175000017500000000000015212041605015372 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/doc/source/user/index.rst0000664000175000017500000000277415212041543017246 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=1781023621.1471577 os_traits-3.8.0/os_traits/0000775000175000017500000000000015212041605014356 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/__init__.py0000664000175000017500000001400415212041543016467 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()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1781023621.1491578 os_traits-3.8.0/os_traits/compute/0000775000175000017500000000000015212041605016032 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/__init__.py0000664000175000017500000000473515212041543020155 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/arch.py0000664000175000017500000000154015212041543017322 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/config_drive.py0000664000175000017500000000113415212041543021042 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/ephemeral.py0000664000175000017500000000124215212041543020346 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/firmware.py0000664000175000017500000000124415212041543020222 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/graphics.py0000664000175000017500000000164515212041543020213 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/image.py0000664000175000017500000000232115212041543017465 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/migrate.py0000664000175000017500000000135215212041543020036 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/net.py0000664000175000017500000000260415212041543017175 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/security.py0000664000175000017500000000264715212041543020265 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' ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/sound.py0000664000175000017500000000166515212041543017545 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' ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/status.py0000664000175000017500000000121615212041543017730 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/storage.py0000664000175000017500000000174715212041543020062 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/usb.py0000664000175000017500000000171215212041543017177 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' ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/viommu.py0000664000175000017500000000157315212041543017727 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/compute/volume.py0000664000175000017500000000170615212041543017720 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1781023621.1501577 os_traits-3.8.0/os_traits/hw/0000775000175000017500000000000015212041605014774 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/__init__.py0000664000175000017500000000000015212041543017074 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/arch.py0000664000175000017500000000233115212041543016263 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1781023621.1501577 os_traits-3.8.0/os_traits/hw/cpu/0000775000175000017500000000000015212041605015563 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/cpu/__init__.py0000664000175000017500000000207615212041543017702 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/cpu/aarch64.py0000664000175000017500000000436115212041543017372 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/cpu/amd.py0000664000175000017500000000266515212041543016710 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1781023621.1501577 os_traits-3.8.0/os_traits/hw/cpu/ppc64le/0000775000175000017500000000000015212041605017040 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/cpu/ppc64le/__init__.py0000664000175000017500000000114415212041543021152 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=1781023621.1501577 os_traits-3.8.0/os_traits/hw/cpu/x86/0000775000175000017500000000000015212041605016210 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/cpu/x86/__init__.py0000664000175000017500000000700415212041543020323 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/cpu/x86/amd.py0000664000175000017500000000162715212041543017332 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/cpu/x86/intel.py0000664000175000017500000000175015212041543017701 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1781023621.1511579 os_traits-3.8.0/os_traits/hw/gpu/0000775000175000017500000000000015212041605015567 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/gpu/__init__.py0000664000175000017500000000000015212041543017667 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/gpu/api.py0000664000175000017500000000342515212041543016717 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/gpu/cuda.py0000664000175000017500000001274215212041543017064 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) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/gpu/max_display_heads.py0000664000175000017500000000125415212041543021622 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/gpu/resolution.py0000664000175000017500000000200115212041543020336 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1781023621.1511579 os_traits-3.8.0/os_traits/hw/nic/0000775000175000017500000000000015212041605015545 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/nic/__init__.py0000664000175000017500000000162315212041543017661 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/nic/accel.py0000664000175000017500000000150215212041543017165 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 ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/nic/dcb.py0000664000175000017500000000137515212041543016656 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', ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/nic/offload.py0000664000175000017500000000256715212041543017544 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 ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/nic/sriov.py0000664000175000017500000000215615212041543017266 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1781023621.1511579 os_traits-3.8.0/os_traits/hw/numa/0000775000175000017500000000000015212041605015734 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/numa/__init__.py0000664000175000017500000000163415212041543020052 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', ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1781023621.1511579 os_traits-3.8.0/os_traits/hw/pci/0000775000175000017500000000000015212041605015547 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/hw/pci/__init__.py0000664000175000017500000000176615212041543017673 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=1781023621.1521578 os_traits-3.8.0/os_traits/misc/0000775000175000017500000000000015212041605015311 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/misc/__init__.py0000664000175000017500000000335715212041543017433 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=1781023621.1521578 os_traits-3.8.0/os_traits/owner/0000775000175000017500000000000015212041605015510 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/owner/__init__.py0000664000175000017500000000127115212041543017623 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=1781023621.1521578 os_traits-3.8.0/os_traits/storage/0000775000175000017500000000000015212041605016022 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/storage/__init__.py0000664000175000017500000000000015212041543020122 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/storage/disk.py0000664000175000017500000000120515212041543017325 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=1781023621.1521578 os_traits-3.8.0/os_traits/tests/0000775000175000017500000000000015212041605015520 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/tests/__init__.py0000664000175000017500000000000015212041543017620 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/tests/base.py0000664000175000017500000000143215212041543017005 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.""" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/tests/test_cuda.py0000664000175000017500000000275415212041543020056 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) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/os_traits/tests/test_os_traits.py0000664000175000017500000001204715212041543021145 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.tests import base class TestSymbols(base.TestCase): def test_trait(self): """Simply tests that the constants from submodules are imported into the primary os_traits module space. """ trait = ot.HW_CPU_X86_SSE42 self.assertEqual("HW_CPU_X86_SSE42", trait) # And the "leaf-module" namespace... self.assertEqual(x86.SSE42, ot.HW_CPU_X86_SSE42) self.assertEqual(api.DIRECTX_V10, ot.HW_GPU_API_DIRECTX_V10) self.assertEqual(resolution.W1920H1080, ot.HW_GPU_RESOLUTION_W1920H1080) self.assertEqual(offload.TSO, ot.HW_NIC_OFFLOAD_TSO) def test_get_traits_filter_by_prefix(self): traits = ot.get_traits('HW_CPU') self.assertIn("HW_CPU_X86_SSE42", traits) self.assertIn("HW_CPU_HYPERTHREADING", traits) self.assertIn(ot.HW_CPU_X86_AVX2, traits) self.assertNotIn(ot.STORAGE_DISK_SSD, traits) self.assertNotIn(ot.HW_NIC_SRIOV, traits) self.assertNotIn('CUSTOM_NAMESPACE', traits) self.assertNotIn('os_traits', traits) def test_dunderinit_and_nondunderinit(self): """Make sure we can have both dunderinit'd traits and submodules co-exist in the same namespace. """ traits = ot.get_traits('COMPUTE') self.assertIn("COMPUTE_DEVICE_TAGGING", traits) self.assertIn(ot.COMPUTE_DEVICE_TAGGING, traits) self.assertIn("COMPUTE_VOLUME_EXTEND", traits) self.assertIn(ot.COMPUTE_NET_ATTACH_INTERFACE, traits) def test_get_traits_filter_by_suffix(self): traits = ot.get_traits(suffix='SSE42') self.assertIn("HW_CPU_X86_SSE42", traits) self.assertEqual(1, len(traits)) def test_get_traits_filter_by_prefix_and_suffix(self): traits = ot.get_traits(prefix='HW_NIC', suffix='RSA') self.assertIn("HW_NIC_ACCEL_RSA", traits) self.assertNotIn(ot.HW_NIC_ACCEL_TLS, traits) self.assertEqual(1, len(traits)) traits = ot.get_traits(prefix='HW_NIC', suffix='TX') self.assertIn("HW_NIC_SRIOV_QOS_TX", traits) self.assertIn("HW_NIC_OFFLOAD_TX", traits) self.assertEqual(2, len(traits)) def test_check_traits(self): traits = set(["HW_CPU_X86_SSE42", "HW_CPU_X86_XOP"]) not_traits = set(["not_trait1", "not_trait2"]) check_traits = [] check_traits.extend(traits) check_traits.extend(not_traits) self.assertEqual((traits, not_traits), ot.check_traits(check_traits)) def test_check_traits_filter_by_prefix(self): hw_trait = "HW_CPU_X86_SSE42" storage_trait = "STORAGE_DISK_SSD" check_traits = [hw_trait, storage_trait] self.assertEqual((set([hw_trait]), set([storage_trait])), ot.check_traits(check_traits, "HW")) self.assertEqual((set([storage_trait]), set([hw_trait])), ot.check_traits(check_traits, "STORAGE")) self.assertEqual((set(), set([hw_trait, storage_trait])), ot.check_traits(check_traits, "MISC")) def test_is_custom(self): self.assertTrue(ot.is_custom('CUSTOM_FOO')) self.assertFalse(ot.is_custom('HW_CPU_X86_SSE42')) def test_trait_names_match_regex(self): traits = ot.get_traits() valid_name = re.compile("^[A-Z][A-Z0-9_]*$") for t in traits: match = valid_name.match(t) if not match: self.fail("Trait %s does not validate name regex." % t) def test_normalize_name(self): values = [ ("foo", "CUSTOM_FOO"), ("VCPU", "CUSTOM_VCPU"), ("CUSTOM_BOB", "CUSTOM_CUSTOM_BOB"), ("CUSTM_BOB", "CUSTOM_CUSTM_BOB"), (u"Fu\xdfball", u"CUSTOM_FU_BALL"), ("abc-123", "CUSTOM_ABC_123"), ("Hello, world! This is a test ^_^", "CUSTOM_HELLO_WORLD_THIS_IS_A_TEST_"), (" leading and trailing spaces ", "CUSTOM__LEADING_AND_TRAILING_SPACES_"), ] for test_value, expected in values: result = ot.normalize_name(test_value) self.assertEqual(expected, result) def test_owner_trait(self): # Test for owner prefix traits. traits = ot.get_traits('OWNER') self.assertEqual(["OWNER_CYBORG", "OWNER_NOVA"], traits) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1781023621.154158 os_traits-3.8.0/os_traits.egg-info/0000775000175000017500000000000015212041605016050 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023621.0 os_traits-3.8.0/os_traits.egg-info/PKG-INFO0000644000175000017500000000353215212041605017146 0ustar00zuulzuulMetadata-Version: 2.4 Name: os-traits Version: 3.8.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/ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023621.0 os_traits-3.8.0/os_traits.egg-info/SOURCES.txt0000664000175000017500000000465015212041605017741 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/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-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././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023621.0 os_traits-3.8.0/os_traits.egg-info/dependency_links.txt0000664000175000017500000000000115212041605022116 0ustar00zuulzuul ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023621.0 os_traits-3.8.0/os_traits.egg-info/not-zip-safe0000664000175000017500000000000115212041605020276 0ustar00zuulzuul ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023621.0 os_traits-3.8.0/os_traits.egg-info/pbr.json0000664000175000017500000000005615212041605017527 0ustar00zuulzuul{"git_version": "5854668", "is_release": true}././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023621.0 os_traits-3.8.0/os_traits.egg-info/requires.txt0000664000175000017500000000001315212041605020442 0ustar00zuulzuulpbr>=3.0.0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023621.0 os_traits-3.8.0/os_traits.egg-info/top_level.txt0000664000175000017500000000001215212041605020573 0ustar00zuulzuulos_traits ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/pyproject.toml0000664000175000017500000000014415212041543015263 0ustar00zuulzuul[build-system] requires = ["pbr>=5.7.0", "setuptools>=64.0.0", "wheel"] build-backend = "pbr.build" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1781023621.1441574 os_traits-3.8.0/releasenotes/0000775000175000017500000000000015212041605015040 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1781023621.153158 os_traits-3.8.0/releasenotes/notes/0000775000175000017500000000000015212041605016170 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/notes/.placeholder0000664000175000017500000000000015212041543020442 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/notes/add-owner-trait-f33e0e038961cbbd.yaml0000664000175000017500000000034115212041543024345 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. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/notes/add-suffix-get_traits-d1d91edcf7f65188.yaml0000664000175000017500000000030115212041543025557 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. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/notes/deprecate-version-attribute-6e9a41e1eee53d19.yaml0000664000175000017500000000031115212041543026772 0ustar00zuulzuul--- deprecations: - | The ``os_traits.__version__`` attribute has been deprecated for removal. Prefer use of ``importlib.metadata`` to inspect version information for installed packages. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/notes/drop-python2-support-d11499973c50713b.yaml0000664000175000017500000000011615212041543025133 0ustar00zuulzuul--- upgrade: - | Python 2 is no longer supported. Python 3 is required. ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1781023621.154158 os_traits-3.8.0/releasenotes/source/0000775000175000017500000000000015212041605016340 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1781023621.154158 os_traits-3.8.0/releasenotes/source/_static/0000775000175000017500000000000015212041605017766 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/source/_static/.placeholder0000664000175000017500000000000015212041543022240 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1781023621.154158 os_traits-3.8.0/releasenotes/source/_templates/0000775000175000017500000000000015212041605020475 5ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/source/_templates/.placeholder0000664000175000017500000000000015212041543022747 0ustar00zuulzuul././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/source/conf.py0000664000175000017500000000416615212041543017647 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' ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/source/index.rst0000664000175000017500000000023115212041543020176 0ustar00zuulzuul======================= os_traits Release Notes ======================= .. toctree:: :maxdepth: 1 unreleased stein rocky queens pike ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/source/pike.rst0000664000175000017500000000017215212041543020023 0ustar00zuulzuul========================= Pike Series Release Notes ========================= .. release-notes:: :branch: stable/pike ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/source/queens.rst0000664000175000017500000000022315212041543020370 0ustar00zuulzuul=================================== Queens Series Release Notes =================================== .. release-notes:: :branch: stable/queens ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/source/rocky.rst0000664000175000017500000000017615212041543020226 0ustar00zuulzuul========================== Rocky Series Release Notes ========================== .. release-notes:: :branch: stable/rocky ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/source/stein.rst0000664000175000017500000000017615212041543020221 0ustar00zuulzuul========================== Stein Series Release Notes ========================== .. release-notes:: :branch: stable/stein ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/releasenotes/source/unreleased.rst0000664000175000017500000000016015212041543021217 0ustar00zuulzuul============================== Current Series Release Notes ============================== .. release-notes:: ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/requirements.txt0000664000175000017500000000003015212041543015625 0ustar00zuulzuulpbr>=3.0.0 # Apache-2.0 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1781023621.154158 os_traits-3.8.0/setup.cfg0000664000175000017500000000157515212041605014200 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 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/setup.py0000664000175000017500000000127115212041543014063 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) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/test-requirements.txt0000664000175000017500000000026315212041543016612 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 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1781023587.0 os_traits-3.8.0/tox.ini0000664000175000017500000000241015212041543013660 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