{"id":21357754,"url":"https://github.com/rcbops/python-quantum-common-buildpackage","last_synced_at":"2025-03-16T06:15:18.219Z","repository":{"id":1828249,"uuid":"2752542","full_name":"rcbops/python-quantum-common-buildpackage","owner":"rcbops","description":"git-buildpackage repo for python-quantum-common","archived":false,"fork":false,"pushed_at":"2011-11-11T17:42:39.000Z","size":136,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-22T18:30:31.541Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"Olde-Skuul/doom3do","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rcbops.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-11-10T23:28:22.000Z","updated_at":"2014-01-16T04:40:34.000Z","dependencies_parsed_at":"2022-08-20T09:40:36.358Z","dependency_job_id":null,"html_url":"https://github.com/rcbops/python-quantum-common-buildpackage","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcbops%2Fpython-quantum-common-buildpackage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcbops%2Fpython-quantum-common-buildpackage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcbops%2Fpython-quantum-common-buildpackage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcbops%2Fpython-quantum-common-buildpackage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rcbops","download_url":"https://codeload.github.com/rcbops/python-quantum-common-buildpackage/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243830955,"owners_count":20354856,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-22T05:11:27.016Z","updated_at":"2025-03-16T06:15:18.196Z","avatar_url":"https://github.com/rcbops.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# -- Welcome!\n\n  You have come across a cloud computing network fabric controller.  It has\n  identified itself as \"Quantum.\"  It aims to tame your (cloud) networking!\n\n# -- Basics:\n\n1) Quantum REST API: Quantum supports a REST-ful programmatic interface to\n   manage your cloud networking fabric.\n\n2) Quantum Plugins: Quantum sports a plug-able architecture that allows\n   Quantum's REST API to be backed by various entities that can create a\n   cloud-class virtual networking fabric.  The advantages of this plug-able\n   architecture is two-folds:\n\n   a) Allows for ANY open-source project or commercial vendor to write a\n   Quantum plug-in.\n\n   b) Allows Quantum users to not be tied down to a single Quantum\n   implementation and enables them to switch out a plug-in by simple editing a\n   config file - plugins.ini\n\n# -- Dependencies\n\n The following python packages are required to run quantum.  These can be\n installed using pip:\n\n eventlet\u003e=0.9.12\n nose\n Paste\n PasteDeploy\n pep8==0.5.0\n python-gflags\n routes\n simplejson\n webob\n webtest\n\n1) Install easy_install (there is probably a distribution specific package for\nthis)\n\n2) Install pip:\n   $ easy_install pip==dev\n3) Install packages with pip:\n   $ pip install \u003cpackage name\u003e\n\n# -- Configuring Quantum plug-in\n\n1) Identify your desired plug-in.  Choose a plugin from one of he options in\n   the quantum/plugins directory.\n\n2) Update plug-in configuration by editing the quantum/plugins.ini file and\n   modify \"provider\" property to point to the location of the Quantum plug-in.\n   It should specify the class path to the plugin and the class name (i.e. for\n   a plugin class MyPlugin in quantum/plugins/myplugin/myplugin.py the\n   provider would be: quantum.plugins.myplugin.myplugin.MyPlugin)\n\n3) Read the plugin specific README, this is usually found in the same\n   directory as your Quantum plug-in, and follow configuration instructions.\n\n# -- Launching the Quantum Service\n\n1) Start quantum using the following command [on the quantum service host]:\n~/src/quantum$ PYTHONPATH=.:$PYTHONPATH python bin/quantum etc/quantum.conf\n\n# -- Making requests against the Quantum Service\n\nPlease refer to sample Web Service client code in:\n\n../quantum/test_scripts/miniclient.py\n\n# -- CLI tools to program the Quantum-managed Cloud networking fabric\n\nQuantum comes with a programmatic CLI that is driven by the Quantum Web\nService.  You can use the CLI by issuing the following command:\n\n~/src/quantum$ PYTHONPATH=.:$PYTHONPATH python quantum/cli.py\n\nThis will show help all of the available commands.\n\nAn example session looks like this:\n\n$ export TENANT=t1\n$ PYTHONPATH=. python quantum/cli.py -v create_net $TENANT network1\nCreated a new Virtual Network with ID:e754e7c0-a8eb-40e5-861a-b182d30c3441\n\n# -- Authentication and Authorization\n\nRequests to Quantum API are authenticated with the Keystone identity service\nusing a token-based authentication protocol. \n\n1) Enabling Authentication and Authorization\nThe Keystone identity service is a requirement. It must be installed, although\nnot necessarily on the same machine where Quantum is running; both Keystone's\nadmin API and service API should be running\n\nAuthentication and Authorization middleware should be enabled in the Quantum\npipeline. To this aim, uncomment the following line in /etc/quantum.conf:\n\npipeline = authN authZ extensions quantumapiapp\n\nThe final step concerns configuring access to Keystone. The following attributes\nmust be specified in the [filter:authN] section of quantum.conf:\n\nauth_host\t\t\tIP address or host name of the server where Keystone is running\nauth_port\t\t\tPort where the Keystone Admin API is listening\nauth_protocol\t\tProtocol used for communicating with Keystone (http/https)\nauth_version\t\tKeystone API version (default: 2.0)\nauth_admin_token\tKeystone token for administrative access\nauth_admin_user\t\tKeystone user with administrative rights\nauth_admin_password Password for the user specified with auth_admin_user\n\nNOTE: aut_admin_token and auth_admin_user/password are exclusive. \nIf both are specified, auth_admin_token has priority.\n\n2) Authenticating and Authorizing request for Quantum API \n\nA user should first authenticate with Keystone, supplying user credentials;\nthe Keystone service will return an authentication token, together with\ninformations concerning token expirations and endpoint where that token can\nbe used. \n\nThe authentication token must be included in every request for the Quantum\nAPI, in the 'X_AUTH_TOKEN' header. Quantum will look for the authentication\ntoken in this header, and validate it with the Keystone service.\n\nIn order to validate authentication tokens, Quantum uses Keystone's\nadministrative API. It therefore requires credentials for an administrative\nuser, which can be specified in Quantum's configuration file\n(etc/quantum.conf)\nEither username and password, or an authentication token for an administrative\nuser can be specified in the configuration file: \n\n- Credentials:\n\nauth_admin_user = admin\nauth_admin_password = secrete\n\n- Admin token:\n\nauth_admin_token = 9a82c95a-99e9-4c3a-b5ee-199f6ba7ff04\n\nAs of the current release, any user for a tenant is allowed to perform\nevery operation on the networks owned by the tenant itself, except for\nplugging interfaces. In order to perform such operation, the user must have\nthe Quantum:NetworkAdmin roles. Roles can be configured in Keystone using \nthe administrative API.\n\n\n# -- Writing your own Quantum plug-in\n\nIf you wish the write your own Quantum plugin, please refer to some concrete as\nwell as sample plugins available in:\n\n../quantum/quantum/plugins/.. directory.\n\nThere are a few requirements to writing your own plugin:\n\n1) Your plugin should implement all methods defined in the\n   quantum/quantum_plugin_base.QuantumPluginBase class\n\n2) Copy your Quantum plug-in over to the quantum/quantum/plugins/.. directory\n\n3) The next step is to edit the plugins.ini file in the same directory\n   as QuantumPluginBase class and specify the location of your custom plugin\n   as the \"provider\"\n\n4) Launch the Quantum Service, and your plug-in is configured and ready to\n   manage a Cloud Networking Fabric.\n\n# -- Extensions\n\n1) Creating Extensions:\n   a) Extension files should be placed under ./extensions folder. \n   b) The extension file should have a class with the same name as the filename. \n      This class should implement the contract required by the extension framework. \n      See ExtensionDescriptor class in ./quantum/common/extensions.py for details\n   c) To stop a file in ./extensions folder from being loaded as an extension, \n      the filename should start with an \"_\"\n   For an example of an extension file look at Foxinsocks class in \n   ./tests/unit/extensions/foxinsocks.py\n   The unit tests in ./tests/unit/test_extensions.py document all the ways in \n   which you can use extensions\n\n2) Associating plugins with extensions:\n   a) A Plugin can advertize all the extensions it supports through the \n     'supported_extension_aliases' attribute. Eg:\n \n      class SomePlugin:\n        ...\n        supported_extension_aliases = ['extension1_alias', \n                                     'extension2_alias',\n                                     'extension3_alias']\n      Any extension not in this list will not be loaded for the plugin\n\n  b) Extension Interfaces for plugins (optional)\n     The extension can mandate an interface that plugins have to support with the\n     'get_plugin_interface' method in the extension.\n     For an example see the FoxInSocksPluginInterface in foxinsocks.py.\n\n  The QuantumEchoPlugin lists foxinsox in its supported_extension_aliases \n  and implements the method from FoxInSocksPluginInterface.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcbops%2Fpython-quantum-common-buildpackage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frcbops%2Fpython-quantum-common-buildpackage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcbops%2Fpython-quantum-common-buildpackage/lists"}