os-traits-2.3.0/0000775000175000017500000000000013640201401013452 5ustar zuulzuul00000000000000os-traits-2.3.0/tox.ini0000664000175000017500000000250113640201323014766 0ustar zuulzuul00000000000000[tox] minversion = 3.2 envlist = py37,pep8 ignore_basepython_conflict = true [testenv] basepython = python3 whitelist_externals = rm deps = -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} -r{toxinidir}/test-requirements.txt commands = stestr run --slowest {posargs} [testenv:pep8] commands = flake8 {posargs} [testenv:venv] commands = {posargs} [testenv:docs] deps = -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} -r{toxinidir}/doc/requirements.txt commands = rm -rf doc/build sphinx-build -W -b html doc/source doc/build/html [testenv:pdf-docs] deps = {[testenv:docs]deps} whitelist_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 os-traits-2.3.0/doc/0000775000175000017500000000000013640201401014217 5ustar zuulzuul00000000000000os-traits-2.3.0/doc/source/0000775000175000017500000000000013640201401015517 5ustar zuulzuul00000000000000os-traits-2.3.0/doc/source/conf.py0000775000175000017500000000427013640201323017027 0ustar zuulzuul00000000000000# 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. # -- 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', ] # openstackdocstheme options repository_name = 'openstack/os-traits' 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 = u'os-traits' copyright = u'2016, 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 = 'sphinx' # -- 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' # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. html_last_updated_fmt = '%Y-%m-%d %H:%M' # -- 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', u'os-traits Documentation', u'OpenStack Foundation', 'manual'), ] os-traits-2.3.0/doc/source/install/0000775000175000017500000000000013640201401017165 5ustar zuulzuul00000000000000os-traits-2.3.0/doc/source/install/index.rst0000664000175000017500000000030413640201323021026 0ustar zuulzuul00000000000000============ Installation ============ At the command line:: $ pip install os-traits Or, if you have virtualenvwrapper installed:: $ mkvirtualenv os-traits $ pip install os-traits os-traits-2.3.0/doc/source/index.rst0000664000175000017500000000124113640201323017361 0ustar zuulzuul00000000000000========= 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 os-traits-2.3.0/doc/source/user/0000775000175000017500000000000013640201401016475 5ustar zuulzuul00000000000000os-traits-2.3.0/doc/source/user/index.rst0000664000175000017500000000277413640201323020353 0ustar zuulzuul00000000000000===== 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'] os-traits-2.3.0/doc/source/reference/0000775000175000017500000000000013640201401017455 5ustar zuulzuul00000000000000os-traits-2.3.0/doc/source/reference/index.rst0000664000175000017500000000715513640201323021331 0ustar zuulzuul00000000000000========= 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. os-traits-2.3.0/doc/source/contributor/0000775000175000017500000000000013640201401020071 5ustar zuulzuul00000000000000os-traits-2.3.0/doc/source/contributor/index.rst0000664000175000017500000000215413640201323021737 0ustar zuulzuul00000000000000============ 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 os-traits-2.3.0/doc/requirements.txt0000664000175000017500000000031613640201323017506 0ustar zuulzuul00000000000000sphinx!=1.6.6,!=1.6.7,>=1.6.2,<2.0.0;python_version=='2.7' # BSD sphinx!=1.6.6,!=1.6.7,>=1.6.2;python_version>='3.4' # BSD openstackdocstheme>=1.18.1 # Apache-2.0 # releasenotes reno>=2.5.0 # Apache-2.0 os-traits-2.3.0/PKG-INFO0000664000175000017500000000336213640201401014553 0ustar zuulzuul00000000000000Metadata-Version: 1.2 Name: os-traits Version: 2.3.0 Summary: A library containing standardized trait strings Home-page: https://docs.openstack.org/os-traits/latest/ Author: OpenStack Author-email: openstack-discuss@lists.openstack.org License: UNKNOWN Description: ========= os-traits ========= `os-traits` is an OpenStack library containing standardized trait strings. Traits are strings that represent a feature of a resource provider hosted by the Placement_ service. This library contains the catalog of constants that have been standardized in the OpenStack community to refer to a particular hardware, virtualization, storage, network, or device trait. * Free software: Apache license * Documentation: https://docs.openstack.org/os-traits/latest/ * Source: http://opendev.org/openstack/os-traits * Bugs: https://storyboard.openstack.org/#!/project/openstack/os-traits * Release Notes: https://docs.openstack.org/releasenotes/os-traits .. _Placement: https://docs.openstack.org/placement/latest/ Platform: UNKNOWN Classifier: Environment :: OpenStack Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: Apache Software License Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: CPython Requires-Python: >=3.6 os-traits-2.3.0/LICENSE0000664000175000017500000002363713640201323014475 0ustar zuulzuul00000000000000 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. os-traits-2.3.0/.stestr.conf0000664000175000017500000000006213640201323015724 0ustar zuulzuul00000000000000[DEFAULT] test_path=./os_traits/tests top_dir=./ os-traits-2.3.0/os_traits/0000775000175000017500000000000013640201401015461 5ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/misc/0000775000175000017500000000000013640201401016414 5ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/misc/__init__.py0000664000175000017500000000335713640201323020540 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/hw/0000775000175000017500000000000013640201401016077 5ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/hw/cpu/0000775000175000017500000000000013640201401016666 5ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/hw/cpu/ppc64le/0000775000175000017500000000000013640201401020143 5ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/hw/cpu/ppc64le/__init__.py0000664000175000017500000000114413640201323022257 0ustar zuulzuul00000000000000# -*- 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' ] os-traits-2.3.0/os_traits/hw/cpu/x86/0000775000175000017500000000000013640201401017313 5ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/hw/cpu/x86/__init__.py0000664000175000017500000000574413640201323021441 0ustar zuulzuul00000000000000# -*- 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 # 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', ] os-traits-2.3.0/os_traits/hw/cpu/x86/amd.py0000664000175000017500000000167113640201323020436 0ustar zuulzuul00000000000000# -*- 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/amd-sev-libvirt-support.html # noqa 'SEV', # 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', ] os-traits-2.3.0/os_traits/hw/cpu/x86/intel.py0000664000175000017500000000163413640201323021007 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/hw/cpu/__init__.py0000664000175000017500000000207613640201323021007 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/hw/cpu/aarch64.py0000664000175000017500000000436113640201323020477 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/hw/cpu/amd.py0000664000175000017500000000266513640201323020015 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/hw/gpu/0000775000175000017500000000000013640201401016672 5ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/hw/gpu/resolution.py0000664000175000017500000000200113640201323021443 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/hw/gpu/cuda.py0000664000175000017500000000625113640201323020167 0ustar zuulzuul00000000000000# -*- 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/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) os-traits-2.3.0/os_traits/hw/gpu/__init__.py0000664000175000017500000000000013640201323020774 0ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/hw/gpu/max_display_heads.py0000664000175000017500000000125413640201323022727 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/hw/gpu/api.py0000664000175000017500000000342513640201323020024 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/hw/__init__.py0000664000175000017500000000000013640201323020201 0ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/hw/numa/0000775000175000017500000000000013640201401017037 5ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/hw/numa/__init__.py0000664000175000017500000000163413640201323021157 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/hw/nic/0000775000175000017500000000000013640201401016650 5ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/hw/nic/accel.py0000664000175000017500000000150213640201323020272 0ustar zuulzuul00000000000000# -*- 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 ] os-traits-2.3.0/os_traits/hw/nic/sriov.py0000664000175000017500000000215613640201323020373 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/hw/nic/offload.py0000664000175000017500000000256713640201323020651 0ustar zuulzuul00000000000000# -*- 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 ] os-traits-2.3.0/os_traits/hw/nic/__init__.py0000664000175000017500000000162313640201323020766 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/hw/nic/dcb.py0000664000175000017500000000137513640201323017763 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/__init__.py0000664000175000017500000001307713640201323017605 0ustar zuulzuul00000000000000# -*- coding: utf-8 -*- # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import importlib import pkgutil import re import sys import pbr.version THIS_NAME = __name__ THIS_LIB = sys.modules[THIS_NAME] TEST_DIR = "%s.tests" % THIS_NAME __version__ = pbr.version.VersionInfo(THIS_NAME).version_string() # Any user-specified feature/trait is prefixed with the custom namespace CUSTOM_NAMESPACE = 'CUSTOM_' def _symbolize(mod_name, props): """Given a reference to a Python module object and an iterable of short string names for traits, registers symbols in the module corresponding to the full namespaced name for each trait. """ for prop in props: leaf_mod = sys.modules[mod_name] value_base = '_'.join([m.upper() for m in mod_name.split('.')[1:]]) value = value_base + '_' + prop.upper() setattr(THIS_LIB, value, value) # os_traits.HW_CPU_X86_SSE setattr(leaf_mod, prop, value) # os_traits.hw.cpu.x86.SSE def _visualize(mod_name, props, seen=None): if mod_name in seen: return seen.add(mod_name) components = mod_name.split('.') tab = ' ' # Print the module name indent = tab * (len(components) - 1) print('%s%s:' % (indent, components[-1].upper())) # Print the properties indent = tab * len(components) if props: print('%s%s' % (indent, ', '.join(props))) def _walk_submodules(package, recursive, callback, **kwargs): """Recursively walk the repository's submodules and invoke a callback for each module with the list of short trait names found therein. :param package: The package (name or module obj) to start from. :param recursive: If True, recurse depth-first. :param callback: Callable to be invoked for each module. The signature is:: callback(mod_name, props, **kwargs) * mod_name: the string name of the module (e.g. 'os_traits.hw.cpu'). * props: an iterable of short string names for traits, gleaned from the TRAITS member of that module, defaulting to []. * kwargs: The same kwargs as passed to _walk_submodules, useful for tracking data across calls. :param kwargs: Arbitrary keyword arguments to be passed to the callback on each invocation. """ if isinstance(package, str): package = importlib.import_module(package) for loader, mod_name, is_pkg in pkgutil.walk_packages( package.__path__, package.__name__ + '.'): if TEST_DIR in mod_name: continue imported = importlib.import_module(mod_name) props = getattr(imported, "TRAITS", []) callback(mod_name, props, **kwargs) if recursive and is_pkg: _walk_submodules(mod_name, recursive, callback, **kwargs) # This is where the names defined in submodules are imported by recursively # importing all submodules/subpackages and symbolizing their TRAITS _walk_submodules(sys.modules.get(__name__), True, _symbolize) def get_traits(prefix=None, suffix=None): """Returns the trait strings in the os_traits module, optionally filtered by a supplied prefix and suffix. :param prefix: Optional string prefix to filter by. e.g. 'HW_' :param suffix: Optional string suffix to filter by, e.g. 'SSE' """ prefix = prefix or "" suffix = suffix or "" return [ v for k, v in sys.modules[__name__].__dict__.items() if isinstance(v, str) and not k.startswith('_') and v.startswith(prefix) and v.endswith(suffix) and # skip module constants k not in ('CUSTOM_NAMESPACE', 'THIS_NAME', 'THIS_LIB', 'TEST_DIR') ] def check_traits(traits, prefix=None): """Returns a tuple of two trait string sets, the first set contains valid traits, and the second contains others. :param traits: An iterable contains trait strings. :param prefix: Optional string prefix to filter by. e.g. 'HW_' """ trait_set = set(traits) valid_trait_set = set(get_traits(prefix)) valid_traits = trait_set & valid_trait_set return (valid_traits, trait_set - valid_traits) def is_custom(trait): """Returns True if the trait string represents a custom trait, or False otherwise. :param trait: String name of the trait """ return trait.startswith(CUSTOM_NAMESPACE) def normalize_name(name): """Converts an input string to a legal* custom trait name. Legal custom trait names are prefixed with CUSTOM_ and contain only the characters A-Z, 0-9, and _ (underscore). *Does not attempt to handle length restrictions. :param name: A string to be converted. :return: A legal* custom trait name. """ if name is None: return None # Replace non-alphanumeric characters with underscores norm_name = re.sub('[^0-9A-Za-z]+', '_', name) # Bug #1762789: Do .upper after replacing non alphanumerics. return CUSTOM_NAMESPACE + norm_name.upper() def print_tree(): """Print (to stdout) a visual representation of all the namespaces and the (short) trait names defined therein. """ _walk_submodules(sys.modules.get(__name__), True, _visualize, seen=set()) os-traits-2.3.0/os_traits/storage/0000775000175000017500000000000013640201401017125 5ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/storage/__init__.py0000664000175000017500000000000013640201323021227 0ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/storage/disk.py0000664000175000017500000000120513640201323020432 0ustar zuulzuul00000000000000# -*- 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 ] os-traits-2.3.0/os_traits/tests/0000775000175000017500000000000013640201401016623 5ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/tests/__init__.py0000664000175000017500000000000013640201323020725 0ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/tests/test_cuda.py0000664000175000017500000000275413640201323021163 0ustar zuulzuul00000000000000# -*- 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) os-traits-2.3.0/os_traits/tests/test_os_traits.py0000664000175000017500000001160413640201323022250 0ustar zuulzuul00000000000000# -*- 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) os-traits-2.3.0/os_traits/tests/base.py0000664000175000017500000000143213640201323020112 0ustar zuulzuul00000000000000# -*- 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.""" os-traits-2.3.0/os_traits/compute/0000775000175000017500000000000013640201401017135 5ustar zuulzuul00000000000000os-traits-2.3.0/os_traits/compute/volume.py0000664000175000017500000000170613640201323021025 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/compute/status.py0000664000175000017500000000121613640201323021035 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/compute/__init__.py0000664000175000017500000000317613640201323021260 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/compute/security.py0000664000175000017500000000141713640201323021364 0ustar zuulzuul00000000000000# -*- 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/stein/ # approved/add-emulated-virtual-tpm.html # support for TPM 1.2 'TPM_1_2', # support for TPM 2.0 'TPM_2_0' ] os-traits-2.3.0/os_traits/compute/image.py0000664000175000017500000000232113640201323020572 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/compute/net.py0000664000175000017500000000244413640201323020304 0ustar zuulzuul00000000000000# -*- 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', # 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', ] os-traits-2.3.0/os_traits/compute/migrate.py0000664000175000017500000000137213640201323021145 0ustar zuulzuul00000000000000# -*- 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#proposed-change # noqa 'AUTO_CONVERGE', 'POST_COPY', ] os-traits-2.3.0/os_traits/compute/storage.py0000664000175000017500000000163713640201323021165 0ustar zuulzuul00000000000000# -*- 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', ] os-traits-2.3.0/os_traits/compute/graphics.py0000664000175000017500000000162213640201323021313 0ustar zuulzuul00000000000000# -*- 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_CIRRUS', 'MODEL_GOP', 'MODEL_NONE', 'MODEL_QXL', 'MODEL_VGA', 'MODEL_VIRTIO', 'MODEL_VMVGA', 'MODEL_XEN', ] os-traits-2.3.0/CONTRIBUTING.rst0000664000175000017500000000135713640201323016124 0ustar zuulzuul00000000000000If 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 os-traits-2.3.0/README.rst0000664000175000017500000000134413640201323015146 0ustar zuulzuul00000000000000========= 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://storyboard.openstack.org/#!/project/openstack/os-traits * Release Notes: https://docs.openstack.org/releasenotes/os-traits .. _Placement: https://docs.openstack.org/placement/latest/ os-traits-2.3.0/babel.cfg0000664000175000017500000000002113640201323015174 0ustar zuulzuul00000000000000[python: **.py] os-traits-2.3.0/setup.cfg0000664000175000017500000000214613640201401015276 0ustar zuulzuul00000000000000[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.6 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.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3 :: Only Programming Language :: Python :: Implementation :: CPython [files] packages = os_traits [compile_catalog] directory = os_traits/locale domain = os_traits [update_catalog] domain = os_traits output_dir = os_traits/locale input_file = os_traits/locale/os_traits.pot [extract_messages] keywords = _ gettext ngettext l_ lazy_gettext mapping_file = babel.cfg output_file = os_traits/locale/os_traits.pot [egg_info] tag_build = tag_date = 0 os-traits-2.3.0/os_traits.egg-info/0000775000175000017500000000000013640201401017153 5ustar zuulzuul00000000000000os-traits-2.3.0/os_traits.egg-info/PKG-INFO0000664000175000017500000000336213640201401020254 0ustar zuulzuul00000000000000Metadata-Version: 1.2 Name: os-traits Version: 2.3.0 Summary: A library containing standardized trait strings Home-page: https://docs.openstack.org/os-traits/latest/ Author: OpenStack Author-email: openstack-discuss@lists.openstack.org License: UNKNOWN Description: ========= os-traits ========= `os-traits` is an OpenStack library containing standardized trait strings. Traits are strings that represent a feature of a resource provider hosted by the Placement_ service. This library contains the catalog of constants that have been standardized in the OpenStack community to refer to a particular hardware, virtualization, storage, network, or device trait. * Free software: Apache license * Documentation: https://docs.openstack.org/os-traits/latest/ * Source: http://opendev.org/openstack/os-traits * Bugs: https://storyboard.openstack.org/#!/project/openstack/os-traits * Release Notes: https://docs.openstack.org/releasenotes/os-traits .. _Placement: https://docs.openstack.org/placement/latest/ Platform: UNKNOWN Classifier: Environment :: OpenStack Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: Apache Software License Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: CPython Requires-Python: >=3.6 os-traits-2.3.0/os_traits.egg-info/SOURCES.txt0000664000175000017500000000401013640201401021032 0ustar zuulzuul00000000000000.stestr.conf .zuul.yaml AUTHORS CONTRIBUTING.rst ChangeLog HACKING.rst LICENSE MANIFEST.in README.rst babel.cfg requirements.txt setup.cfg setup.py test-requirements.txt tox.ini doc/requirements.txt 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/graphics.py os_traits/compute/image.py os_traits/compute/migrate.py os_traits/compute/net.py os_traits/compute/security.py os_traits/compute/status.py os_traits/compute/storage.py os_traits/compute/volume.py os_traits/hw/__init__.py os_traits/hw/cpu/__init__.py os_traits/hw/cpu/aarch64.py os_traits/hw/cpu/amd.py os_traits/hw/cpu/ppc64le/__init__.py os_traits/hw/cpu/x86/__init__.py os_traits/hw/cpu/x86/amd.py os_traits/hw/cpu/x86/intel.py os_traits/hw/gpu/__init__.py os_traits/hw/gpu/api.py os_traits/hw/gpu/cuda.py os_traits/hw/gpu/max_display_heads.py os_traits/hw/gpu/resolution.py os_traits/hw/nic/__init__.py os_traits/hw/nic/accel.py os_traits/hw/nic/dcb.py os_traits/hw/nic/offload.py os_traits/hw/nic/sriov.py os_traits/hw/numa/__init__.py os_traits/misc/__init__.py os_traits/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-suffix-get_traits-d1d91edcf7f65188.yaml releasenotes/notes/drop-python2-support-d11499973c50713b.yaml releasenotes/source/conf.py releasenotes/source/index.rst releasenotes/source/pike.rst releasenotes/source/queens.rst releasenotes/source/rocky.rst releasenotes/source/stein.rst releasenotes/source/unreleased.rst releasenotes/source/_static/.placeholder releasenotes/source/_templates/.placeholderos-traits-2.3.0/os_traits.egg-info/top_level.txt0000664000175000017500000000001213640201401021676 0ustar zuulzuul00000000000000os_traits os-traits-2.3.0/os_traits.egg-info/pbr.json0000664000175000017500000000005613640201401020632 0ustar zuulzuul00000000000000{"git_version": "bca5bac", "is_release": true}os-traits-2.3.0/os_traits.egg-info/not-zip-safe0000664000175000017500000000000113640201401021401 0ustar zuulzuul00000000000000 os-traits-2.3.0/os_traits.egg-info/dependency_links.txt0000664000175000017500000000000113640201401023221 0ustar zuulzuul00000000000000 os-traits-2.3.0/os_traits.egg-info/requires.txt0000664000175000017500000000002313640201401021546 0ustar zuulzuul00000000000000pbr!=2.1.0,>=2.0.0 os-traits-2.3.0/setup.py0000664000175000017500000000200613640201323015165 0ustar zuulzuul00000000000000# 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. # THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT import setuptools # In python < 2.7.4, a lazy loading of package `pbr` will break # setuptools if some other modules registered functions in `atexit`. # solution from: http://bugs.python.org/issue15881#msg170215 try: import multiprocessing # noqa except ImportError: pass setuptools.setup( setup_requires=['pbr>=2.0.0'], pbr=True) os-traits-2.3.0/ChangeLog0000664000175000017500000001027413640201401015230 0ustar zuulzuul00000000000000CHANGES ======= 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 os-traits-2.3.0/AUTHORS0000664000175000017500000000301613640201401014522 0ustar zuulzuul00000000000000Adam Spiers Charles Short Chris Dent Corey Bryant Dan Smith Doug Hellmann EdLeafe Edan David Eric Fried Eric Fried Ghanshyam Mann Jay Pipes Jianghua Wang Kashyap Chamarthy Kevin Zhao Konstantinos Samaras-Tsakiris Lee Yarwood Matt Riedemann Michael Davies OpenStack Release Bot Paul-Emile Element Rodolfo Alonso Hernandez Ruby Loo Sean Mooney Stephen Finucane Sundar Nadathur Takashi NATSUME Tony Breeds Victor Morales Vu Cong Tuan Wang Huaqiang Yingxin ZhijunWei caoyuan dineshbhor ericxiett gaozx jacky06 jianghua wang qingszhao ya.wang os-traits-2.3.0/.zuul.yaml0000664000175000017500000000024113640201323015413 0ustar zuulzuul00000000000000- project: templates: - publish-openstack-docs-pti - check-requirements - openstack-python3-ussuri-jobs - release-notes-jobs-python3 os-traits-2.3.0/MANIFEST.in0000664000175000017500000000013613640201323015213 0ustar zuulzuul00000000000000include AUTHORS include ChangeLog exclude .gitignore exclude .gitreview global-exclude *.pyc os-traits-2.3.0/requirements.txt0000664000175000017500000000036313640201323016743 0ustar zuulzuul00000000000000# The order of packages is significant, because pip processes them in the order # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. pbr!=2.1.0,>=2.0.0 # Apache-2.0 os-traits-2.3.0/HACKING.rst0000664000175000017500000000021413640201323015250 0ustar zuulzuul00000000000000os-traits Style Commandments ============================ Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/ os-traits-2.3.0/test-requirements.txt0000664000175000017500000000061213640201323017715 0ustar zuulzuul00000000000000# The order of packages is significant, because pip processes them in the order # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. hacking>=2.0.0,<2.1.0 # Apache-2.0 coverage!=4.4,>=4.0 # 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 os-traits-2.3.0/releasenotes/0000775000175000017500000000000013640201401016143 5ustar zuulzuul00000000000000os-traits-2.3.0/releasenotes/source/0000775000175000017500000000000013640201401017443 5ustar zuulzuul00000000000000os-traits-2.3.0/releasenotes/source/_static/0000775000175000017500000000000013640201401021071 5ustar zuulzuul00000000000000os-traits-2.3.0/releasenotes/source/_static/.placeholder0000664000175000017500000000000013640201323023345 0ustar zuulzuul00000000000000os-traits-2.3.0/releasenotes/source/conf.py0000664000175000017500000000433513640201323020752 0ustar zuulzuul00000000000000# 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 repository_name = 'openstack/os-traits' 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 = u'os-traits Release Notes' copyright = u'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 = 'sphinx' # -- 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' # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. html_last_updated_fmt = '%Y-%m-%d %H:%M' os-traits-2.3.0/releasenotes/source/queens.rst0000664000175000017500000000022313640201323021475 0ustar zuulzuul00000000000000=================================== Queens Series Release Notes =================================== .. release-notes:: :branch: stable/queens os-traits-2.3.0/releasenotes/source/index.rst0000664000175000017500000000023113640201323021303 0ustar zuulzuul00000000000000======================= os_traits Release Notes ======================= .. toctree:: :maxdepth: 1 unreleased stein rocky queens pike os-traits-2.3.0/releasenotes/source/stein.rst0000664000175000017500000000017613640201323021326 0ustar zuulzuul00000000000000========================== Stein Series Release Notes ========================== .. release-notes:: :branch: stable/stein os-traits-2.3.0/releasenotes/source/rocky.rst0000664000175000017500000000017613640201323021333 0ustar zuulzuul00000000000000========================== Rocky Series Release Notes ========================== .. release-notes:: :branch: stable/rocky os-traits-2.3.0/releasenotes/source/_templates/0000775000175000017500000000000013640201401021600 5ustar zuulzuul00000000000000os-traits-2.3.0/releasenotes/source/_templates/.placeholder0000664000175000017500000000000013640201323024054 0ustar zuulzuul00000000000000os-traits-2.3.0/releasenotes/source/pike.rst0000664000175000017500000000017213640201323021130 0ustar zuulzuul00000000000000========================= Pike Series Release Notes ========================= .. release-notes:: :branch: stable/pike os-traits-2.3.0/releasenotes/source/unreleased.rst0000664000175000017500000000016013640201323022324 0ustar zuulzuul00000000000000============================== Current Series Release Notes ============================== .. release-notes:: os-traits-2.3.0/releasenotes/notes/0000775000175000017500000000000013640201401017273 5ustar zuulzuul00000000000000os-traits-2.3.0/releasenotes/notes/drop-python2-support-d11499973c50713b.yaml0000664000175000017500000000011613640201323026240 0ustar zuulzuul00000000000000--- upgrade: - | Python 2 is no longer supported. Python 3 is required. os-traits-2.3.0/releasenotes/notes/add-suffix-get_traits-d1d91edcf7f65188.yaml0000664000175000017500000000030113640201323026664 0ustar zuulzuul00000000000000--- 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. os-traits-2.3.0/releasenotes/notes/.placeholder0000664000175000017500000000000013640201323021547 0ustar zuulzuul00000000000000