From 55a7069cd87d59375ff9fb75f0fc733ea190b854 Mon Sep 17 00:00:00 2001 From: beierlm <mark.beierl@canonical.com> Date: Fri, 26 Feb 2021 21:32:26 +0100 Subject: [PATCH] Virtual PC Descriptor A simple descriptor that uses a native charm to launch a clean Ubuntu base image and layer a graphical desktop environment and RDP server on top. Signed-off-by: beierlm <mark.beierl@canonical.com> --- hackfest_virtual-pc_ns/README.md | 3 + .../hackfest_virtual-pc_nsd.yaml | 37 + .../charms/virtual-pc-src/.jujuignore | 3 + .../charms/virtual-pc-src/LICENSE | 674 ++++++++ .../charms/virtual-pc-src/README.md | 55 + .../charms/virtual-pc-src/actions.yaml | 6 + .../charms/virtual-pc-src/config.yaml | 6 + .../charms/virtual-pc-src/metadata.yaml | 9 + .../virtual-pc-src/requirements-dev.txt | 3 + .../charms/virtual-pc-src/requirements.txt | 1 + .../charms/virtual-pc-src/run_tests | 16 + .../charms/virtual-pc-src/src/charm.py | 137 ++ .../charms/virtual-pc-src/src/test.py | 17 + .../charms/virtual-pc-src/src/utils.py | 78 + .../virtual-pc-src/templates/color.pkla | 6 + .../virtual-pc-src/templates/startwm.sh | 33 + .../charms/virtual-pc-src/tests/__init__.py | 0 .../charms/virtual-pc-src/tests/test_charm.py | 35 + .../charms/virtual-pc/LICENSE | 674 ++++++++ .../charms/virtual-pc/README.md | 55 + .../charms/virtual-pc/actions.yaml | 6 + .../charms/virtual-pc/config.yaml | 6 + .../charms/virtual-pc/dispatch | 3 + .../charms/virtual-pc/hooks/install | 1 + .../charms/virtual-pc/hooks/start | 1 + .../charms/virtual-pc/hooks/upgrade-charm | 1 + .../charms/virtual-pc/metadata.yaml | 9 + .../charms/virtual-pc/requirements-dev.txt | 3 + .../charms/virtual-pc/requirements.txt | 1 + .../charms/virtual-pc/run_tests | 16 + .../charms/virtual-pc/src/charm.py | 138 ++ .../charms/virtual-pc/src/test.py | 17 + .../charms/virtual-pc/src/utils.py | 78 + .../charms/virtual-pc/templates/color.pkla | 6 + .../charms/virtual-pc/templates/startwm.sh | 33 + .../charms/virtual-pc/tests/__init__.py | 0 .../charms/virtual-pc/tests/test_charm.py | 35 + .../venv/PyYAML-5.4.1.dist-info/INSTALLER | 1 + .../venv/PyYAML-5.4.1.dist-info/LICENSE | 20 + .../venv/PyYAML-5.4.1.dist-info/METADATA | 46 + .../venv/PyYAML-5.4.1.dist-info/RECORD | 43 + .../venv/PyYAML-5.4.1.dist-info/WHEEL | 5 + .../venv/PyYAML-5.4.1.dist-info/top_level.txt | 2 + .../charms/virtual-pc/venv/_yaml/__init__.py | 33 + .../venv/ops-1.1.0.dist-info/INSTALLER | 1 + .../venv/ops-1.1.0.dist-info/LICENSE.txt | 202 +++ .../venv/ops-1.1.0.dist-info/METADATA | 263 +++ .../venv/ops-1.1.0.dist-info/RECORD | 28 + .../virtual-pc/venv/ops-1.1.0.dist-info/WHEEL | 5 + .../venv/ops-1.1.0.dist-info/top_level.txt | 1 + .../charms/virtual-pc/venv/ops/__init__.py | 20 + .../charms/virtual-pc/venv/ops/charm.py | 823 ++++++++++ .../charms/virtual-pc/venv/ops/framework.py | 1199 ++++++++++++++ .../charms/virtual-pc/venv/ops/jujuversion.py | 114 ++ .../virtual-pc/venv/ops/lib/__init__.py | 264 +++ .../charms/virtual-pc/venv/ops/log.py | 58 + .../charms/virtual-pc/venv/ops/main.py | 406 +++++ .../charms/virtual-pc/venv/ops/model.py | 1314 +++++++++++++++ .../charms/virtual-pc/venv/ops/storage.py | 374 +++++ .../charms/virtual-pc/venv/ops/testing.py | 826 ++++++++++ .../charms/virtual-pc/venv/ops/version.py | 3 + .../charms/virtual-pc/venv/yaml/__init__.py | 427 +++++ .../yaml/_yaml.cpython-38-x86_64-linux-gnu.so | Bin 0 -> 2342916 bytes .../charms/virtual-pc/venv/yaml/composer.py | 139 ++ .../virtual-pc/venv/yaml/constructor.py | 748 +++++++++ .../charms/virtual-pc/venv/yaml/cyaml.py | 101 ++ .../charms/virtual-pc/venv/yaml/dumper.py | 62 + .../charms/virtual-pc/venv/yaml/emitter.py | 1137 +++++++++++++ .../charms/virtual-pc/venv/yaml/error.py | 75 + .../charms/virtual-pc/venv/yaml/events.py | 86 + .../charms/virtual-pc/venv/yaml/loader.py | 63 + .../charms/virtual-pc/venv/yaml/nodes.py | 49 + .../charms/virtual-pc/venv/yaml/parser.py | 589 +++++++ .../charms/virtual-pc/venv/yaml/reader.py | 185 +++ .../virtual-pc/venv/yaml/representer.py | 389 +++++ .../charms/virtual-pc/venv/yaml/resolver.py | 227 +++ .../charms/virtual-pc/venv/yaml/scanner.py | 1435 +++++++++++++++++ .../charms/virtual-pc/venv/yaml/serializer.py | 111 ++ .../charms/virtual-pc/venv/yaml/tokens.py | 104 ++ .../cloud_init/virtual-pc_init | 4 + hackfest_virtual-pc_vnfd/virtual-pc_vnfd.yaml | 66 + 81 files changed, 14250 insertions(+) create mode 100644 hackfest_virtual-pc_ns/README.md create mode 100644 hackfest_virtual-pc_ns/hackfest_virtual-pc_nsd.yaml create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/.jujuignore create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/LICENSE create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/README.md create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/actions.yaml create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/config.yaml create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/metadata.yaml create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/requirements-dev.txt create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/requirements.txt create mode 100755 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/run_tests create mode 100755 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/src/charm.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/src/test.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/src/utils.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/templates/color.pkla create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/templates/startwm.sh create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/tests/__init__.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc-src/tests/test_charm.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/LICENSE create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/README.md create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/actions.yaml create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/config.yaml create mode 100755 hackfest_virtual-pc_vnfd/charms/virtual-pc/dispatch create mode 120000 hackfest_virtual-pc_vnfd/charms/virtual-pc/hooks/install create mode 120000 hackfest_virtual-pc_vnfd/charms/virtual-pc/hooks/start create mode 120000 hackfest_virtual-pc_vnfd/charms/virtual-pc/hooks/upgrade-charm create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/metadata.yaml create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/requirements-dev.txt create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/requirements.txt create mode 100755 hackfest_virtual-pc_vnfd/charms/virtual-pc/run_tests create mode 100755 hackfest_virtual-pc_vnfd/charms/virtual-pc/src/charm.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/src/test.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/src/utils.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/templates/color.pkla create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/templates/startwm.sh create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/tests/__init__.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/tests/test_charm.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/INSTALLER create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/LICENSE create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/METADATA create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/RECORD create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/WHEEL create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/top_level.txt create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/_yaml/__init__.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/INSTALLER create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/LICENSE.txt create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/METADATA create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/RECORD create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/WHEEL create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/top_level.txt create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/__init__.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/charm.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/framework.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/jujuversion.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/lib/__init__.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/log.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/main.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/model.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/storage.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/testing.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/version.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/__init__.py create mode 100755 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/_yaml.cpython-38-x86_64-linux-gnu.so create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/composer.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/constructor.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/cyaml.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/dumper.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/emitter.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/error.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/events.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/loader.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/nodes.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/parser.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/reader.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/representer.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/resolver.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/scanner.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/serializer.py create mode 100644 hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/tokens.py create mode 100644 hackfest_virtual-pc_vnfd/cloud_init/virtual-pc_init create mode 100644 hackfest_virtual-pc_vnfd/virtual-pc_vnfd.yaml diff --git a/hackfest_virtual-pc_ns/README.md b/hackfest_virtual-pc_ns/README.md new file mode 100644 index 00000000..7c2c2af5 --- /dev/null +++ b/hackfest_virtual-pc_ns/README.md @@ -0,0 +1,3 @@ +# Descriptor created by OSM descriptor package generated + +**Created on 02/18/2021, 05:51:56 ** \ No newline at end of file diff --git a/hackfest_virtual-pc_ns/hackfest_virtual-pc_nsd.yaml b/hackfest_virtual-pc_ns/hackfest_virtual-pc_nsd.yaml new file mode 100644 index 00000000..12462518 --- /dev/null +++ b/hackfest_virtual-pc_ns/hackfest_virtual-pc_nsd.yaml @@ -0,0 +1,37 @@ +# Copyright 2019 ETSI OSM +# +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +nsd: + nsd: + - description: Virtual Desktop Computer with Xubuntu Desktop and RDP + designer: OSM + df: + - id: default-df + vnf-profile: + - id: '1' + virtual-link-connectivity: + - constituent-cpd-id: + - constituent-base-element-id: '1' + constituent-cpd-id: virtual-pc-mgmt-ext + virtual-link-profile-id: mgmtnet + vnfd-id: virtual-pc_vnfd + id: hackfest_virtual-pc_nsd + name: hackfest_virtual-pc_nsd + version: '1.0' + virtual-link-desc: + - id: mgmtnet + mgmt-network: 'true' + vnfd-id: + - virtual-pc_vnfd diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/.jujuignore b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/.jujuignore new file mode 100644 index 00000000..6ccd559e --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/.jujuignore @@ -0,0 +1,3 @@ +/venv +*.py[cod] +*.charm diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/LICENSE b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/LICENSE new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/README.md b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/README.md new file mode 100644 index 00000000..834c2b5b --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/README.md @@ -0,0 +1,55 @@ +# virtual-pc + +## Description + + +## Usage + +### Prepare the environment + +```bash +sudo snap install juju --classic --channel 2.8/stable +sudo snap install lxd +lxd.init +juju bootstrap lxd +juju add-model test-virtual-pc +``` + +### Deploy (from the Store) + +```bash +juju deploy cs:~charmed-osm/virtual-pc --channel edge +``` + +### Deploy (locally) + +Build the charm: + +```bash +virtualenv -p python3 venv +source venv/bin/activate +pip install -r requirements-dev.txt +pip install charmcraft +./venv/bin/charmcraft build +``` + +Deploy: + +```bash +juju deploy ./virtual-pc.charm +``` + +## Developing + +Create and activate a virtualenv with the development requirements: + + virtualenv -p python3 venv + source venv/bin/activate + pip install -r requirements-dev.txt + +## Testing + +The Python operator framework includes a very nice harness for testing +operator behaviour without full deployment. Just `run_tests`: + + ./run_tests diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/actions.yaml b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/actions.yaml new file mode 100644 index 00000000..9a14be4d --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/actions.yaml @@ -0,0 +1,6 @@ +# Copyright 2020 ETSI OSM Contributors +# See LICENSE file for licensing details. +# +# This is only an example, and you should edit to suit your needs. +# If you don't need actions, you can remove the file entirely. +# It ties in to the example _on_fortune_action handler in src/charm.py diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/config.yaml b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/config.yaml new file mode 100644 index 00000000..c2c67568 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/config.yaml @@ -0,0 +1,6 @@ +# Copyright 2020 ETSI OSM Contributors +# See LICENSE file for licensing details. +# +# This is only an example, and you should edit to suit your needs. +# If you don't need config, you can remove the file entirely. +options: diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/metadata.yaml b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/metadata.yaml new file mode 100644 index 00000000..3d30a5b5 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/metadata.yaml @@ -0,0 +1,9 @@ +# Copyright 2020 David Garcia +# See LICENSE file for licensing details. +name: virtual-pc +description: | + TODO: fill out the charm's description +summary: | + TODO: fill out the charm's summary +series: + - focal diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/requirements-dev.txt b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/requirements-dev.txt new file mode 100644 index 00000000..34e6ef82 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/requirements-dev.txt @@ -0,0 +1,3 @@ +-r requirements.txt +flake8 +charmcraft \ No newline at end of file diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/requirements.txt b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/requirements.txt new file mode 100644 index 00000000..2d81d3bb --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/requirements.txt @@ -0,0 +1 @@ +ops diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/run_tests b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/run_tests new file mode 100755 index 00000000..08ec01e0 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/run_tests @@ -0,0 +1,16 @@ +#!/bin/sh -e +# Copyright 2020 David Garcia +# See LICENSE file for licensing details. + +if [ -z "$VIRTUAL_ENV" -a -d venv/ ]; then + . venv/bin/activate +fi + +if [ -z "$PYTHONPATH" ]; then + export PYTHONPATH=src +else + export PYTHONPATH="src:$PYTHONPATH" +fi + +flake8 +python3 -m unittest -v "$@" diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/src/charm.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/src/charm.py new file mode 100755 index 00000000..e068304f --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/src/charm.py @@ -0,0 +1,137 @@ +#!/usr/bin/env python3 +# Copyright 2020 David Garcia +# See LICENSE file for licensing details. + +from apt.progress.base import InstallProgress +import logging +import os +import shutil + +from jinja2 import Template +from ops.charm import CharmBase +from ops.framework import StoredState +from ops.main import main +from ops.model import ( + MaintenanceStatus, + ActiveStatus, + # BlockedStatus, +) +from utils import ( + service_stop, + service_restart, + install_apt, + shell, +) + + +# from typing import Dict, Any +logger = logging.getLogger(__name__) + +APT_REQUIREMENTS = [ + "firefox", + "mate-desktop", # 469 packages + "mate-applets", + "mate-applet-brisk-menu", + "mate-indicator-applet", + "mate-session-manager", + "mate-terminal", + "xrdp", +] +SNAP_INSTALLS = [ + "code --classic", +] +POLKIT_TEMPLATE = "./templates/color.pkla" +POLKIT_PATH = "/etc/polkit-1/localauthority/50-local.d/color.pkla" +STARTWM_TEMPLATE = "./templates/startwm.sh" +STARTWM_PATH = "/etc/xrdp/startwm.sh" +# WM_COMMAND = "startxfce4" # xubuntu-desktop +# WM_COMMAND = "budgie-desktop" # budgie-desktop-environment +WM_COMMAND = "mate-session" # mate-desktop + + +class VirtualPCCharm(CharmBase, InstallProgress): + _stored = StoredState() + + def __init__(self, *args): + super().__init__(*args) + InstallProgress.__init__(self) + + self._stored.set_default() + + # Basic hooks + self.framework.observe(self.on.install, self._on_install) + self.framework.observe(self.on.start, self._on_start) + self.framework.observe(self.on.stop, self._on_stop) + self.framework.observe(self.on.config_changed, self._on_config_changed) + self.framework.observe(self.on.update_status, self._on_update_status) + + # Actions hooks + + # Relations hooks + + # Override InstallProgress to update our status + def status_change(self, pkg, percent, status): + message = str(int(percent)) + "% " + status + self.unit.status = MaintenanceStatus(message) + + # Basic hooks + def _on_install(self, _): + self.unit.status = MaintenanceStatus("Installing apt packages") + install_apt(packages=APT_REQUIREMENTS, update=True, progress=self) + service_stop('xrdp') + + self.unit.status = MaintenanceStatus("Installing snaps") + for snap in SNAP_INSTALLS: + shell("sudo snap install " + snap) + + self.unit.status = MaintenanceStatus("Setting default display manager") + shell("echo /usr/sbin/lightdm | sudo tee /etc/X11/default-display-manager") + + self.unit.status = MaintenanceStatus("Adding XRDP to ssl-cert group") + shell("sudo adduser xrdp ssl-cert") + + self.unit.status = MaintenanceStatus("Generating Window Manager startup script") + with open(STARTWM_TEMPLATE, "r") as template: + content = Template(template.read()).render(command=WM_COMMAND) + with open(STARTWM_PATH, "w") as startwm: + startwm.write(content) + + self.unit.status = MaintenanceStatus("Generating Polkit files") + with open(POLKIT_TEMPLATE, "r") as template: + content = Template(template.read()).render() + with open(POLKIT_PATH, "w") as polkit: + polkit.write(content) + + self._stored.installed = True + + def _on_start(self, _): + self.unit.status = MaintenanceStatus("Starting XRDP server") + service_restart('xrdp') + self._stored.started = True + self.unit.status = self._get_current_status() + + def _on_stop(self, _): + service_stop('xrdp') + self._stored.started = False + self.unit.status = self._get_current_status() + + def _on_config_changed(self, _): + self.unit.status = self._get_current_status() + + def _on_update_status(self, _): + self.unit.status = self._get_current_status() + + # Action hooks + # Relation hooks + + # Private functions + def _get_current_status(self): + status_type = ActiveStatus + status_msg = "" + if self._stored.installed: + status_msg = "Ready" + return status_type(status_msg) + + +if __name__ == "__main__": + main(VirtualPCCharm) diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/src/test.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/src/test.py new file mode 100644 index 00000000..f4cb4f75 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/src/test.py @@ -0,0 +1,17 @@ +from apt.progress.base import InstallProgress + +from utils import ( + install_apt, +) + + +class Progress(InstallProgress): + + def status_change(self, pkg, percent, status): + print("status change\n") + #print(str(int(percent)) + "% \n") + True + + +if __name__ == "__main__": + install_apt(packages=["mate-backgrounds"], update=True, progress=Progress()) diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/src/utils.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/src/utils.py new file mode 100644 index 00000000..a8dce1bf --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/src/utils.py @@ -0,0 +1,78 @@ +import apt +from apt.progress.base import OpProgress +import shutil +import subprocess +from typing import Dict, List, NoReturn + + +def service_active(service_name: str): + result = subprocess.run( + ["systemctl", "is-active", service_name], + stdout=subprocess.PIPE, + encoding="utf-8", + ) + return result.stdout == "active\n" + + +def all_values_set(dictionary: Dict[str, str]) -> bool: + return not any(v is None for v in dictionary.values()) + + +def install_apt(packages: List, update: bool = False, progress=None) -> NoReturn: + + cache = apt.cache.Cache() + if update: + cache.update() + cache.open() + for package in packages: + pkg = cache[package] + if not pkg.is_installed: + pkg.mark_install() + cache.commit(install_progress=progress) + + +def remove_apt(packages: List, update: bool = False) -> NoReturn: + cache = apt.cache.Cache() + if update: + cache.update() + cache.open() + for package in packages: + pkg = cache[package] + if not pkg.is_installed: + pkg.mark_delete() + cache.commit() + + +def shell(command: str) -> NoReturn: + subprocess.run(command, shell=True).check_returncode() + + +def copy_files(origin: Dict[str, str], destination: Dict[str, str]) -> NoReturn: + for config, origin_path in origin.items(): + destination_path = destination[config] + shutil.copy(origin_path, destination_path) + + +# Service functions +def _systemctl(action: str, service_name: str) -> NoReturn: + subprocess.run(["systemctl", action, service_name]).check_returncode() + + +def service_start(service_name: str) -> NoReturn: + _systemctl("start", service_name) + + +def service_restart(service_name: str) -> NoReturn: + _systemctl("restart", service_name) + + +def service_stop(service_name: str) -> NoReturn: + _systemctl("stop", service_name) + + +def service_enable(service_name: str) -> NoReturn: + _systemctl("enable", service_name) + + +def systemctl_daemon_reload(): + subprocess.run(["systemctl", "daemon-reload"]).check_returncode() diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/templates/color.pkla b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/templates/color.pkla new file mode 100644 index 00000000..c8b94041 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/templates/color.pkla @@ -0,0 +1,6 @@ +[Allow colord for all users] +Identity=unix-user:* +Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile +ResultAny=yes +ResultInactive=yes +ResultActive=yes \ No newline at end of file diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/templates/startwm.sh b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/templates/startwm.sh new file mode 100644 index 00000000..0f3bdb21 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/templates/startwm.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# xrdp X session start script (c) 2015, 2017 mirabilos +# published under The MirOS Licence + +if test -r /etc/profile; then + . /etc/profile +fi + +if test -r /etc/default/locale; then + . /etc/default/locale + test -z "${LANG+x}" || export LANG + test -z "${LANGUAGE+x}" || export LANGUAGE + test -z "${LC_ADDRESS+x}" || export LC_ADDRESS + test -z "${LC_ALL+x}" || export LC_ALL + test -z "${LC_COLLATE+x}" || export LC_COLLATE + test -z "${LC_CTYPE+x}" || export LC_CTYPE + test -z "${LC_IDENTIFICATION+x}" || export LC_IDENTIFICATION + test -z "${LC_MEASUREMENT+x}" || export LC_MEASUREMENT + test -z "${LC_MESSAGES+x}" || export LC_MESSAGES + test -z "${LC_MONETARY+x}" || export LC_MONETARY + test -z "${LC_NAME+x}" || export LC_NAME + test -z "${LC_NUMERIC+x}" || export LC_NUMERIC + test -z "${LC_PAPER+x}" || export LC_PAPER + test -z "${LC_TELEPHONE+x}" || export LC_TELEPHONE + test -z "${LC_TIME+x}" || export LC_TIME + test -z "${LOCPATH+x}" || export LOCPATH +fi + +if test -r /etc/profile; then + . /etc/profile +fi + +{{ command }} diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/tests/__init__.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/tests/test_charm.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/tests/test_charm.py new file mode 100644 index 00000000..4d456ec7 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc-src/tests/test_charm.py @@ -0,0 +1,35 @@ +# Copyright 2020 David Garcia +# See LICENSE file for licensing details. + +import unittest +from unittest.mock import Mock + +from ops.testing import Harness +from charm import SrsLteCharm + + +class TestCharm(unittest.TestCase): + def test_config_changed(self): + harness = Harness(SrsLteCharm) + self.addCleanup(harness.cleanup) + harness.begin() + self.assertEqual(list(harness.charm._stored.things), []) + harness.update_config({"thing": "foo"}) + self.assertEqual(list(harness.charm._stored.things), ["foo"]) + + def test_action(self): + harness = Harness(SrsLteCharm) + harness.begin() + # the harness doesn't (yet!) help much with actions themselves + action_event = Mock(params={"fail": ""}) + harness.charm._on_fortune_action(action_event) + + self.assertTrue(action_event.set_results.called) + + def test_action_fail(self): + harness = Harness(SrsLteCharm) + harness.begin() + action_event = Mock(params={"fail": "fail this"}) + harness.charm._on_fortune_action(action_event) + + self.assertEqual(action_event.fail.call_args, [("fail this",)]) diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/LICENSE b/hackfest_virtual-pc_vnfd/charms/virtual-pc/LICENSE new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/README.md b/hackfest_virtual-pc_vnfd/charms/virtual-pc/README.md new file mode 100644 index 00000000..834c2b5b --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/README.md @@ -0,0 +1,55 @@ +# virtual-pc + +## Description + + +## Usage + +### Prepare the environment + +```bash +sudo snap install juju --classic --channel 2.8/stable +sudo snap install lxd +lxd.init +juju bootstrap lxd +juju add-model test-virtual-pc +``` + +### Deploy (from the Store) + +```bash +juju deploy cs:~charmed-osm/virtual-pc --channel edge +``` + +### Deploy (locally) + +Build the charm: + +```bash +virtualenv -p python3 venv +source venv/bin/activate +pip install -r requirements-dev.txt +pip install charmcraft +./venv/bin/charmcraft build +``` + +Deploy: + +```bash +juju deploy ./virtual-pc.charm +``` + +## Developing + +Create and activate a virtualenv with the development requirements: + + virtualenv -p python3 venv + source venv/bin/activate + pip install -r requirements-dev.txt + +## Testing + +The Python operator framework includes a very nice harness for testing +operator behaviour without full deployment. Just `run_tests`: + + ./run_tests diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/actions.yaml b/hackfest_virtual-pc_vnfd/charms/virtual-pc/actions.yaml new file mode 100644 index 00000000..9a14be4d --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/actions.yaml @@ -0,0 +1,6 @@ +# Copyright 2020 ETSI OSM Contributors +# See LICENSE file for licensing details. +# +# This is only an example, and you should edit to suit your needs. +# If you don't need actions, you can remove the file entirely. +# It ties in to the example _on_fortune_action handler in src/charm.py diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/config.yaml b/hackfest_virtual-pc_vnfd/charms/virtual-pc/config.yaml new file mode 100644 index 00000000..c2c67568 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/config.yaml @@ -0,0 +1,6 @@ +# Copyright 2020 ETSI OSM Contributors +# See LICENSE file for licensing details. +# +# This is only an example, and you should edit to suit your needs. +# If you don't need config, you can remove the file entirely. +options: diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/dispatch b/hackfest_virtual-pc_vnfd/charms/virtual-pc/dispatch new file mode 100755 index 00000000..fe31c056 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/dispatch @@ -0,0 +1,3 @@ +#!/bin/sh + +JUJU_DISPATCH_PATH="${JUJU_DISPATCH_PATH:-$0}" PYTHONPATH=lib:venv ./src/charm.py diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/hooks/install b/hackfest_virtual-pc_vnfd/charms/virtual-pc/hooks/install new file mode 120000 index 00000000..8b970447 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/hooks/install @@ -0,0 +1 @@ +../dispatch \ No newline at end of file diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/hooks/start b/hackfest_virtual-pc_vnfd/charms/virtual-pc/hooks/start new file mode 120000 index 00000000..8b970447 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/hooks/start @@ -0,0 +1 @@ +../dispatch \ No newline at end of file diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/hooks/upgrade-charm b/hackfest_virtual-pc_vnfd/charms/virtual-pc/hooks/upgrade-charm new file mode 120000 index 00000000..8b970447 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/hooks/upgrade-charm @@ -0,0 +1 @@ +../dispatch \ No newline at end of file diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/metadata.yaml b/hackfest_virtual-pc_vnfd/charms/virtual-pc/metadata.yaml new file mode 100644 index 00000000..3d30a5b5 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/metadata.yaml @@ -0,0 +1,9 @@ +# Copyright 2020 David Garcia +# See LICENSE file for licensing details. +name: virtual-pc +description: | + TODO: fill out the charm's description +summary: | + TODO: fill out the charm's summary +series: + - focal diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/requirements-dev.txt b/hackfest_virtual-pc_vnfd/charms/virtual-pc/requirements-dev.txt new file mode 100644 index 00000000..34e6ef82 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/requirements-dev.txt @@ -0,0 +1,3 @@ +-r requirements.txt +flake8 +charmcraft \ No newline at end of file diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/requirements.txt b/hackfest_virtual-pc_vnfd/charms/virtual-pc/requirements.txt new file mode 100644 index 00000000..2d81d3bb --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/requirements.txt @@ -0,0 +1 @@ +ops diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/run_tests b/hackfest_virtual-pc_vnfd/charms/virtual-pc/run_tests new file mode 100755 index 00000000..08ec01e0 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/run_tests @@ -0,0 +1,16 @@ +#!/bin/sh -e +# Copyright 2020 David Garcia +# See LICENSE file for licensing details. + +if [ -z "$VIRTUAL_ENV" -a -d venv/ ]; then + . venv/bin/activate +fi + +if [ -z "$PYTHONPATH" ]; then + export PYTHONPATH=src +else + export PYTHONPATH="src:$PYTHONPATH" +fi + +flake8 +python3 -m unittest -v "$@" diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/src/charm.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/src/charm.py new file mode 100755 index 00000000..1d720012 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/src/charm.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python3 +# Copyright 2020 David Garcia +# See LICENSE file for licensing details. + +from apt.progress.base import InstallProgress +import logging +import os +import shutil + +from jinja2 import Template +from ops.charm import CharmBase +from ops.framework import StoredState +from ops.main import main +from ops.model import ( + MaintenanceStatus, + ActiveStatus, + # BlockedStatus, +) +from utils import ( + service_stop, + service_restart, + install_apt, + shell, +) + + +# from typing import Dict, Any +logger = logging.getLogger(__name__) + +APT_REQUIREMENTS = [ + "firefox", + "mate-desktop", # 469 packages + "mate-applets", + "mate-applet-brisk-menu", + "mate-indicator-applet", + "mate-session-manager", + "indicator-applet-session", + "mate-terminal", + "xrdp", +] +SNAP_INSTALLS = [ + "code --classic", +] +POLKIT_TEMPLATE = "./templates/color.pkla" +POLKIT_PATH = "/etc/polkit-1/localauthority/50-local.d/color.pkla" +STARTWM_TEMPLATE = "./templates/startwm.sh" +STARTWM_PATH = "/etc/xrdp/startwm.sh" +# WM_COMMAND = "startxfce4" # xubuntu-desktop +# WM_COMMAND = "budgie-desktop" # budgie-desktop-environment +WM_COMMAND = "mate-session" # mate-desktop + + +class VirtualPCCharm(CharmBase, InstallProgress): + _stored = StoredState() + + def __init__(self, *args): + super().__init__(*args) + InstallProgress.__init__(self) + + self._stored.set_default() + + # Basic hooks + self.framework.observe(self.on.install, self._on_install) + self.framework.observe(self.on.start, self._on_start) + self.framework.observe(self.on.stop, self._on_stop) + self.framework.observe(self.on.config_changed, self._on_config_changed) + self.framework.observe(self.on.update_status, self._on_update_status) + + # Actions hooks + + # Relations hooks + + # Override InstallProgress to update our status + def status_change(self, pkg, percent, status): + message = str(int(percent)) + "% " + status + self.unit.status = MaintenanceStatus(message) + + # Basic hooks + def _on_install(self, _): + self.unit.status = MaintenanceStatus("Installing apt packages") + install_apt(packages=APT_REQUIREMENTS, update=True, progress=self) + service_stop('xrdp') + + self.unit.status = MaintenanceStatus("Installing snaps") + for snap in SNAP_INSTALLS: + shell("sudo snap install " + snap) + + self.unit.status = MaintenanceStatus("Setting default display manager") + shell("echo /usr/sbin/lightdm | sudo tee /etc/X11/default-display-manager") + + self.unit.status = MaintenanceStatus("Adding XRDP to ssl-cert group") + shell("sudo adduser xrdp ssl-cert") + + self.unit.status = MaintenanceStatus("Generating Window Manager startup script") + with open(STARTWM_TEMPLATE, "r") as template: + content = Template(template.read()).render(command=WM_COMMAND) + with open(STARTWM_PATH, "w") as startwm: + startwm.write(content) + + self.unit.status = MaintenanceStatus("Generating Polkit files") + with open(POLKIT_TEMPLATE, "r") as template: + content = Template(template.read()).render() + with open(POLKIT_PATH, "w") as polkit: + polkit.write(content) + + self._stored.installed = True + + def _on_start(self, _): + self.unit.status = MaintenanceStatus("Starting XRDP server") + service_restart('xrdp') + self._stored.started = True + self.unit.status = self._get_current_status() + + def _on_stop(self, _): + service_stop('xrdp') + self._stored.started = False + self.unit.status = self._get_current_status() + + def _on_config_changed(self, _): + self.unit.status = self._get_current_status() + + def _on_update_status(self, _): + self.unit.status = self._get_current_status() + + # Action hooks + # Relation hooks + + # Private functions + def _get_current_status(self): + status_type = ActiveStatus + status_msg = "" + if self._stored.installed: + status_msg = "Ready" + return status_type(status_msg) + + +if __name__ == "__main__": + main(VirtualPCCharm) diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/src/test.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/src/test.py new file mode 100644 index 00000000..f4cb4f75 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/src/test.py @@ -0,0 +1,17 @@ +from apt.progress.base import InstallProgress + +from utils import ( + install_apt, +) + + +class Progress(InstallProgress): + + def status_change(self, pkg, percent, status): + print("status change\n") + #print(str(int(percent)) + "% \n") + True + + +if __name__ == "__main__": + install_apt(packages=["mate-backgrounds"], update=True, progress=Progress()) diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/src/utils.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/src/utils.py new file mode 100644 index 00000000..a8dce1bf --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/src/utils.py @@ -0,0 +1,78 @@ +import apt +from apt.progress.base import OpProgress +import shutil +import subprocess +from typing import Dict, List, NoReturn + + +def service_active(service_name: str): + result = subprocess.run( + ["systemctl", "is-active", service_name], + stdout=subprocess.PIPE, + encoding="utf-8", + ) + return result.stdout == "active\n" + + +def all_values_set(dictionary: Dict[str, str]) -> bool: + return not any(v is None for v in dictionary.values()) + + +def install_apt(packages: List, update: bool = False, progress=None) -> NoReturn: + + cache = apt.cache.Cache() + if update: + cache.update() + cache.open() + for package in packages: + pkg = cache[package] + if not pkg.is_installed: + pkg.mark_install() + cache.commit(install_progress=progress) + + +def remove_apt(packages: List, update: bool = False) -> NoReturn: + cache = apt.cache.Cache() + if update: + cache.update() + cache.open() + for package in packages: + pkg = cache[package] + if not pkg.is_installed: + pkg.mark_delete() + cache.commit() + + +def shell(command: str) -> NoReturn: + subprocess.run(command, shell=True).check_returncode() + + +def copy_files(origin: Dict[str, str], destination: Dict[str, str]) -> NoReturn: + for config, origin_path in origin.items(): + destination_path = destination[config] + shutil.copy(origin_path, destination_path) + + +# Service functions +def _systemctl(action: str, service_name: str) -> NoReturn: + subprocess.run(["systemctl", action, service_name]).check_returncode() + + +def service_start(service_name: str) -> NoReturn: + _systemctl("start", service_name) + + +def service_restart(service_name: str) -> NoReturn: + _systemctl("restart", service_name) + + +def service_stop(service_name: str) -> NoReturn: + _systemctl("stop", service_name) + + +def service_enable(service_name: str) -> NoReturn: + _systemctl("enable", service_name) + + +def systemctl_daemon_reload(): + subprocess.run(["systemctl", "daemon-reload"]).check_returncode() diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/templates/color.pkla b/hackfest_virtual-pc_vnfd/charms/virtual-pc/templates/color.pkla new file mode 100644 index 00000000..c8b94041 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/templates/color.pkla @@ -0,0 +1,6 @@ +[Allow colord for all users] +Identity=unix-user:* +Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile +ResultAny=yes +ResultInactive=yes +ResultActive=yes \ No newline at end of file diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/templates/startwm.sh b/hackfest_virtual-pc_vnfd/charms/virtual-pc/templates/startwm.sh new file mode 100644 index 00000000..0f3bdb21 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/templates/startwm.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# xrdp X session start script (c) 2015, 2017 mirabilos +# published under The MirOS Licence + +if test -r /etc/profile; then + . /etc/profile +fi + +if test -r /etc/default/locale; then + . /etc/default/locale + test -z "${LANG+x}" || export LANG + test -z "${LANGUAGE+x}" || export LANGUAGE + test -z "${LC_ADDRESS+x}" || export LC_ADDRESS + test -z "${LC_ALL+x}" || export LC_ALL + test -z "${LC_COLLATE+x}" || export LC_COLLATE + test -z "${LC_CTYPE+x}" || export LC_CTYPE + test -z "${LC_IDENTIFICATION+x}" || export LC_IDENTIFICATION + test -z "${LC_MEASUREMENT+x}" || export LC_MEASUREMENT + test -z "${LC_MESSAGES+x}" || export LC_MESSAGES + test -z "${LC_MONETARY+x}" || export LC_MONETARY + test -z "${LC_NAME+x}" || export LC_NAME + test -z "${LC_NUMERIC+x}" || export LC_NUMERIC + test -z "${LC_PAPER+x}" || export LC_PAPER + test -z "${LC_TELEPHONE+x}" || export LC_TELEPHONE + test -z "${LC_TIME+x}" || export LC_TIME + test -z "${LOCPATH+x}" || export LOCPATH +fi + +if test -r /etc/profile; then + . /etc/profile +fi + +{{ command }} diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/tests/__init__.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/tests/test_charm.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/tests/test_charm.py new file mode 100644 index 00000000..4d456ec7 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/tests/test_charm.py @@ -0,0 +1,35 @@ +# Copyright 2020 David Garcia +# See LICENSE file for licensing details. + +import unittest +from unittest.mock import Mock + +from ops.testing import Harness +from charm import SrsLteCharm + + +class TestCharm(unittest.TestCase): + def test_config_changed(self): + harness = Harness(SrsLteCharm) + self.addCleanup(harness.cleanup) + harness.begin() + self.assertEqual(list(harness.charm._stored.things), []) + harness.update_config({"thing": "foo"}) + self.assertEqual(list(harness.charm._stored.things), ["foo"]) + + def test_action(self): + harness = Harness(SrsLteCharm) + harness.begin() + # the harness doesn't (yet!) help much with actions themselves + action_event = Mock(params={"fail": ""}) + harness.charm._on_fortune_action(action_event) + + self.assertTrue(action_event.set_results.called) + + def test_action_fail(self): + harness = Harness(SrsLteCharm) + harness.begin() + action_event = Mock(params={"fail": "fail this"}) + harness.charm._on_fortune_action(action_event) + + self.assertEqual(action_event.fail.call_args, [("fail this",)]) diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/INSTALLER b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/LICENSE b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/LICENSE new file mode 100644 index 00000000..2f1b8e15 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2017-2021 Ingy döt Net +Copyright (c) 2006-2016 Kirill Simonov + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/METADATA b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/METADATA new file mode 100644 index 00000000..565f05b7 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/METADATA @@ -0,0 +1,46 @@ +Metadata-Version: 2.1 +Name: PyYAML +Version: 5.4.1 +Summary: YAML parser and emitter for Python +Home-page: https://pyyaml.org/ +Author: Kirill Simonov +Author-email: xi@resolvent.net +License: MIT +Download-URL: https://pypi.org/project/PyYAML/ +Project-URL: Bug Tracker, https://github.com/yaml/pyyaml/issues +Project-URL: CI, https://github.com/yaml/pyyaml/actions +Project-URL: Documentation, https://pyyaml.org/wiki/PyYAMLDocumentation +Project-URL: Mailing lists, http://lists.sourceforge.net/lists/listinfo/yaml-core +Project-URL: Source Code, https://github.com/yaml/pyyaml +Platform: Any +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Cython +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Processing :: Markup +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.* + +YAML is a data serialization format designed for human readability +and interaction with scripting languages. PyYAML is a YAML parser +and emitter for Python. + +PyYAML features a complete YAML 1.1 parser, Unicode support, pickle +support, capable extension API, and sensible error messages. PyYAML +supports standard YAML tags and provides Python-specific tags that +allow to represent an arbitrary Python object. + +PyYAML is applicable for a broad range of tasks from complex +configuration files to object serialization and persistence. + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/RECORD b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/RECORD new file mode 100644 index 00000000..68ca4da2 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/RECORD @@ -0,0 +1,43 @@ +PyYAML-5.4.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +PyYAML-5.4.1.dist-info/LICENSE,sha256=jTko-dxEkP1jVwfLiOsmvXZBAqcoKVQwfT5RZ6V36KQ,1101 +PyYAML-5.4.1.dist-info/METADATA,sha256=XnrM5LY-uS85ica26gKUK0dGG-xmPjmGfDTSLpIHQFk,2087 +PyYAML-5.4.1.dist-info/RECORD,, +PyYAML-5.4.1.dist-info/WHEEL,sha256=Dh4w5P6PPWbqyqoE6MHlzbFQwZXlM-voWJDf2WUsS2g,108 +PyYAML-5.4.1.dist-info/top_level.txt,sha256=rpj0IVMTisAjh_1vG3Ccf9v5jpCQwAz6cD1IVU5ZdhQ,11 +_yaml/__init__.py,sha256=04Ae_5osxahpJHa3XBZUAf4wi6XX32gR8D6X6p64GEA,1402 +_yaml/__pycache__/__init__.cpython-38.pyc,, +yaml/__init__.py,sha256=gfp2CbRVhzknghkiiJD2l6Z0pI-mv_iZHPSJ4aj0-nY,13170 +yaml/__pycache__/__init__.cpython-38.pyc,sha256=n0YyVkjiOLmcjlR2NXE5TIZf7Z2clZ6sqQ5KlyuTWSI,11845 +yaml/__pycache__/composer.cpython-38.pyc,sha256=OVPzAKAvC2-Tiv4HUwUUG9JHCzG17nvsRQcFTCtY9xs,3563 +yaml/__pycache__/constructor.cpython-38.pyc,sha256=EXPDY7Prtv3F6QbXiJc5F4BvJQyCCGRu83WF4u6X7Vo,20822 +yaml/__pycache__/cyaml.cpython-38.pyc,sha256=wI01UFU-WhUcdnnczL5QpKu0ZNQTttSzXbleIvIfcvM,3411 +yaml/__pycache__/dumper.cpython-38.pyc,sha256=9wIctrlMpF4ksMWuCc5QAyZSenGiRVyrtU-1pAfj54U,1823 +yaml/__pycache__/emitter.cpython-38.pyc,sha256=kd_QGJd0GjpfgQPN9DlG_7HwKfJnJ24JxtdiUOxM9iE,25353 +yaml/__pycache__/error.cpython-38.pyc,sha256=j6mkXgDmzV0y0lo6FeUrvZL2vHN6Vkc52k0_R0oOn6g,2300 +yaml/__pycache__/events.cpython-38.pyc,sha256=NFsoAO36pPL_uxoCO-xRxKndQ3vx47mkStOYjfoQVZ8,3974 +yaml/__pycache__/loader.cpython-38.pyc,sha256=lEMB2brjPrfMjXXTJpCEx6-ct4eI6LYovD4hW5ZuGsw,2164 +yaml/__pycache__/nodes.cpython-38.pyc,sha256=Kkxh_oL04gQg-YFWwnfjpIoYspsXO4GEqKTr3NbxOD8,1725 +yaml/__pycache__/parser.cpython-38.pyc,sha256=0R9Qx0cBMUoOLzMOWeXCyXsC4S4KJ7oPHdmTVPQ4FbQ,11924 +yaml/__pycache__/reader.cpython-38.pyc,sha256=ZpOMJ6rZDc8EWffI4vZR_Fhcu3WmhgT_GAkDrKkEtPo,4537 +yaml/__pycache__/representer.cpython-38.pyc,sha256=tR9wWffCThWXwQe47uYFdHg2bCkqNjBcwmG7RSHmWS4,10069 +yaml/__pycache__/resolver.cpython-38.pyc,sha256=zsLBuCKn8KAJPVGo5J_xZSytifJktdTtkUNnltOt__I,5498 +yaml/__pycache__/scanner.cpython-38.pyc,sha256=N8ubxRd6bZBjoRna6CU8wK1Imb_7TWOsudzPh9JDDkQ,25269 +yaml/__pycache__/serializer.cpython-38.pyc,sha256=9JDH7ONP5zFlep0f2yNWRoOSZr5Y28jL012O1EIbuug,3320 +yaml/__pycache__/tokens.cpython-38.pyc,sha256=haBW6UBDhVFog2xIe63OkrAP_9JRFyNKCROFPRJiyu0,4935 +yaml/_yaml.cpython-38-x86_64-linux-gnu.so,sha256=fxjEXaSdzion1SMwhu9Ikx-JOVNtcl6KvW_pyGBt-cU,2342916 +yaml/composer.py,sha256=_Ko30Wr6eDWUeUpauUGT3Lcg9QPBnOPVlTnIMRGJ9FM,4883 +yaml/constructor.py,sha256=kNgkfaeLUkwQYY_Q6Ff1Tz2XVw_pG1xVE9Ak7z-viLA,28639 +yaml/cyaml.py,sha256=6ZrAG9fAYvdVe2FK_w0hmXoG7ZYsoYUwapG8CiC72H0,3851 +yaml/dumper.py,sha256=PLctZlYwZLp7XmeUdwRuv4nYOZ2UBnDIUy8-lKfLF-o,2837 +yaml/emitter.py,sha256=jghtaU7eFwg31bG0B7RZea_29Adi9CKmXq_QjgQpCkQ,43006 +yaml/error.py,sha256=Ah9z-toHJUbE9j-M8YpxgSRM5CgLCcwVzJgLLRF2Fxo,2533 +yaml/events.py,sha256=50_TksgQiE4up-lKo_V-nBy-tAIxkIPQxY5qDhKCeHw,2445 +yaml/loader.py,sha256=UVa-zIqmkFSCIYq_PgSGm4NSJttHY2Rf_zQ4_b1fHN0,2061 +yaml/nodes.py,sha256=gPKNj8pKCdh2d4gr3gIYINnPOaOxGhJAUiYhGRnPE84,1440 +yaml/parser.py,sha256=ilWp5vvgoHFGzvOZDItFoGjD6D42nhlZrZyjAwa0oJo,25495 +yaml/reader.py,sha256=0dmzirOiDG4Xo41RnuQS7K9rkY3xjHiVasfDMNTqCNw,6794 +yaml/representer.py,sha256=82UM3ZxUQKqsKAF4ltWOxCS6jGPIFtXpGs7mvqyv4Xs,14184 +yaml/resolver.py,sha256=Z1W8AOMA6Proy4gIO2OhUO4IPS_bFNAl0Ca3rwChpPg,8999 +yaml/scanner.py,sha256=KeQIKGNlSyPE8QDwionHxy9CgbqE5teJEz05FR9-nAg,51277 +yaml/serializer.py,sha256=ChuFgmhU01hj4xgI8GaKv6vfM2Bujwa9i7d2FAHj7cA,4165 +yaml/tokens.py,sha256=lTQIzSVw8Mg9wv459-TjiOQe6wVziqaRlqX2_89rp54,2573 diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/WHEEL b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/WHEEL new file mode 100644 index 00000000..69d594f0 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.36.2) +Root-Is-Purelib: false +Tag: cp38-cp38-manylinux1_x86_64 + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/top_level.txt b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/top_level.txt new file mode 100644 index 00000000..e6475e91 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/PyYAML-5.4.1.dist-info/top_level.txt @@ -0,0 +1,2 @@ +_yaml +yaml diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/_yaml/__init__.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/_yaml/__init__.py new file mode 100644 index 00000000..7baa8c4b --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/_yaml/__init__.py @@ -0,0 +1,33 @@ +# This is a stub package designed to roughly emulate the _yaml +# extension module, which previously existed as a standalone module +# and has been moved into the `yaml` package namespace. +# It does not perfectly mimic its old counterpart, but should get +# close enough for anyone who's relying on it even when they shouldn't. +import yaml + +# in some circumstances, the yaml module we imoprted may be from a different version, so we need +# to tread carefully when poking at it here (it may not have the attributes we expect) +if not getattr(yaml, '__with_libyaml__', False): + from sys import version_info + + exc = ModuleNotFoundError if version_info >= (3, 6) else ImportError + raise exc("No module named '_yaml'") +else: + from yaml._yaml import * + import warnings + warnings.warn( + 'The _yaml extension module is now located at yaml._yaml' + ' and its location is subject to change. To use the' + ' LibYAML-based parser and emitter, import from `yaml`:' + ' `from yaml import CLoader as Loader, CDumper as Dumper`.', + DeprecationWarning + ) + del warnings + # Don't `del yaml` here because yaml is actually an existing + # namespace member of _yaml. + +__name__ = '_yaml' +# If the module is top-level (i.e. not a part of any specific package) +# then the attribute should be set to ''. +# https://docs.python.org/3.8/library/types.html +__package__ = '' diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/INSTALLER b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/LICENSE.txt b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/LICENSE.txt new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/LICENSE.txt @@ -0,0 +1,202 @@ + + 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. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/METADATA b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/METADATA new file mode 100644 index 00000000..cd45af93 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/METADATA @@ -0,0 +1,263 @@ +Metadata-Version: 2.1 +Name: ops +Version: 1.1.0 +Summary: The Python library behind great charms +Home-page: https://github.com/canonical/operator +Author: The Charmcraft team at Canonical Ltd. +Author-email: charmcraft@lists.launchpad.net +License: Apache-2.0 +Platform: UNKNOWN +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: Apache Software License +Classifier: Development Status :: 4 - Beta +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: System Administrators +Classifier: Operating System :: MacOS :: MacOS X +Classifier: Operating System :: POSIX :: Linux +Requires-Python: >=3.5 +Description-Content-Type: text/markdown +Requires-Dist: PyYAML + +# The Operator Framework + +This Operator Framework simplifies [Kubernetes +operator](https://charmhub.io/about) development for +[model-driven application +management](https://juju.is/model-driven-operations). + +A Kubernetes operator is a container that drives lifecycle management, +configuration, integration and daily actions for an application. +Operators simplify software management and operations. They capture +reusable app domain knowledge from experts in a software component that +can be shared. + +This project extends the operator pattern to enable +[universal operators](https://juju.is/universal-operators), not just +for Kubernetes but also operators for traditional Linux or Windows +application management. + +Operators use an [Operator Lifecycle Manager +(OLM)](https://juju.is/operator-lifecycle-manager) to coordinate their +work in a cluster. The system uses Golang for concurrent event +processing under the hood, but enables the operators to be written in +Python. + +## Simple, composable operators + +Operators should 'do one thing and do it well'. Each operator drives a +single microservice and can be [composed with other +operators](https://juju.is/integration) to deliver a complex application. + +It is better to have small, reusable operators that each drive a single +microservice very well. The operator handles instantiation, scaling, +configuration, optimisation, networking, service mesh, observability, +and day-2 operations specific to that microservice. + +Operator composition takes place through declarative integration in +the OLM. Operators declare integration endpoints, and discover lines of +integration between those endpoints dynamically at runtime. + +## Pure Python operators + +The framework provides a standard Python library and object model that +represents the application graph, and an event distribution mechanism for +distributed system coordination and communication. + +The OLM is written in Golang for efficient concurrency in event handling +and distribution. Operators can be written in any language. We recommend +this Python framework for ease of design, development and collaboration. + +## Better collaboration + +Operator developers publish Python libraries that make it easy to integrate +your operator with their operator. The framework includes standard tools +to distribute these integration libraries and keep them up to date. + +Development collaboration happens at [Charmhub.io](https://charmhub.io/) where +operators are published along with integration libraries. Design and +code review discussions are hosted in the +[Charmhub forum](https://discourse.charmhub.io/). We recommend the +[Open Operator Manifesto](https://charmhub.io/manifesto) as a guideline for +high quality operator engineering. + +## Event serialization and operator services + +Distributed systems can be hard! So this framework exists to make it much +simpler to reason about operator behaviour, especially in complex deployments. +The OLM provides [operator services](https://juju.is/operator-services) such +as provisioning, event delivery, leader election and model management. + +Coordination between operators is provided by a cluster-wide event +distribution system. Events are serialized to avoid race conditions in any +given container or machine. This greatly simplifies the development of +operators for high availability, scale-out and integrated applications. + +## Model-driven Operator Lifecycle Manager + +A key goal of the project is to improve the user experience for admins +working with multiple different operators. + +We embrace [model-driven operations](https://juju.is/model-driven-operations) +in the Operator Lifecycle Manager. The model encompasses capacity, +storage, networking, the application graph and administrative access. + +Admins describe the application graph of integrated microservices, and +the OLM then drives instantiation. A change in the model is propagated +to all affected operators, reducing the duplication of effort and +repetition normally found in operating a complex topology of services. + +Administrative actions, updates, configuration and integration are all +driven through the OLM. + +# Getting started + +A package of operator code is called a charm. You will use `charmcraft` +to register your operator name, and publish it when you are ready. + +``` +$ sudo snap install charmcraft --beta +charmcraft (beta) 0.6.0 from John Lenton (chipaca) installed +``` + +Charms written using the operator framework are just Python code. The goal +is to feel natural for somebody used to coding in Python, and reasonably +easy to learn for somebody who is not a pythonista. + +The dependencies of the operator framework are kept as minimal as possible; +currently that's Python 3.5 or greater, and `PyYAML` (both are included by +default in Ubuntu's cloud images from 16.04 on). + +# A quick introduction + +Make an empty directory `my-charm` and cd into it. Then start a new charm +with: + +``` +$ charmcraft init +All done. +There are some notes about things we think you should do. +These are marked with ‘TODO:’, as is customary. Namely: + README.md: fill out the description + README.md: explain how to use the charm + metadata.yaml: fill out the charm's description + metadata.yaml: fill out the charm's summary +``` + +Charmed operators are just Python code. The entry point to your charm can +be any filename, by default this is `src/charm.py` which must be executable +(and probably have `#!/usr/bin/env python3` on the first line). + +You need a `metadata.yaml` to describe your charm, and if you will support +configuration of your charm then `config.yaml` files is required too. The +`requirements.txt` specifies any Python dependencies. + +``` +$ tree my-charm/ +my-charm/ +├── actions.yaml +├── config.yaml +├── LICENSE +├── metadata.yaml +├── README.md +├── requirements-dev.txt +├── requirements.txt +├── run_tests +├── src +│  └── charm.py +├── tests +│  ├── __init__.py +│  └── my_charm.py +``` + +`src/charm.py` here is the entry point to your charm code. At a minimum, it +needs to define a subclass of `CharmBase` and pass that into the framework +`main` function: + +```python +from ops.charm import CharmBase +from ops.main import main + +class MyCharm(CharmBase): + def __init__(self, *args): + super().__init__(*args) + self.framework.observe(self.on.start, self.on_start) + + def on_start(self, event): + # Handle the start event here. + +if __name__ == "__main__": + main(MyCharm) +``` + +That should be enough for you to be able to run + +``` +$ charmcraft build +Done, charm left in 'my-charm.charm' +$ juju deploy ./my-charm.charm +``` + +> 🛈 More information on [`charmcraft`](https://pypi.org/project/charmcraft/) can +> also be found on its [github page](https://github.com/canonical/charmcraft). + +Happy charming! + +# Testing your charms + +The operator framework provides a testing harness, so you can check your +charm does the right thing in different scenarios, without having to create +a full deployment. `pydoc3 ops.testing` has the details, including this +example: + +```python +harness = Harness(MyCharm) +# Do initial setup here +relation_id = harness.add_relation('db', 'postgresql') +# Now instantiate the charm to see events as the model changes +harness.begin() +harness.add_relation_unit(relation_id, 'postgresql/0') +harness.update_relation_data(relation_id, 'postgresql/0', {'key': 'val'}) +# Check that charm has properly handled the relation_joined event for postgresql/0 +self.assertEqual(harness.charm. ...) +``` + +## Talk to us + +If you need help, have ideas, or would just like to chat with us, reach out on +IRC: we're in [#smooth-operator] on freenode (or try the [webchat]). + +We also pay attention to [Charmhub discourse](https://discourse.charmhub.io/) + +You can also deep dive into the [API docs] if that's your thing. + +[webchat]: https://webchat.freenode.net/#smooth-operator +[#smooth-operator]: irc://chat.freenode.net/%23smooth-operator +[discourse]: https://discourse.juju.is/c/charming +[API docs]: https://ops.rtfd.io/ + +## Operator Framework development + +To work in the framework itself you will need Python >= 3.5 and the +dependencies in `requirements-dev.txt` installed in your system, or a +virtualenv: + + virtualenv --python=python3 env + source env/bin/activate + pip install -r requirements-dev.txt + +Then you can try `./run_tests`, it should all go green. + +For improved performance on the tests, ensure that you have PyYAML +installed with the correct extensions: + + apt-get install libyaml-dev + pip install --force-reinstall --no-cache-dir pyyaml + +If you want to build the documentation you'll need the requirements from +`docs/requirements.txt`, or in your virtualenv + + pip install -r docs/requirements.txt + +and then you can run `./build_docs`. + + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/RECORD b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/RECORD new file mode 100644 index 00000000..35eb15f5 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/RECORD @@ -0,0 +1,28 @@ +ops-1.1.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +ops-1.1.0.dist-info/LICENSE.txt,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358 +ops-1.1.0.dist-info/METADATA,sha256=ffVuqPnEob6-iBYjEf3lPShSbToJL17obFFufoW2F4g,9485 +ops-1.1.0.dist-info/RECORD,, +ops-1.1.0.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92 +ops-1.1.0.dist-info/top_level.txt,sha256=enC05wWafSg8iDKIvj3gvtAtEP2kYCyN5Gmd689q-_I,4 +ops/__init__.py,sha256=WaHb0dfp1KEe6jFV8Pm_mcdJ3ModiWujnQ6xLjNzPNQ,819 +ops/__pycache__/__init__.cpython-38.pyc,, +ops/__pycache__/charm.cpython-38.pyc,, +ops/__pycache__/framework.cpython-38.pyc,, +ops/__pycache__/jujuversion.cpython-38.pyc,, +ops/__pycache__/log.cpython-38.pyc,, +ops/__pycache__/main.cpython-38.pyc,, +ops/__pycache__/model.cpython-38.pyc,, +ops/__pycache__/storage.cpython-38.pyc,, +ops/__pycache__/testing.cpython-38.pyc,, +ops/__pycache__/version.cpython-38.pyc,, +ops/charm.py,sha256=7KyaNNA0t_a0h0hrzehSEWm4xU_Y5JIqGWHTg747qfU,32817 +ops/framework.py,sha256=1ByOtFKRR6kRzOEbfWnGEMNevixOYf18U0oZxKq8LsA,43769 +ops/jujuversion.py,sha256=9wMlUmngcAENV9RkgVVLWtZsyRQaf6XNrQQqUeY_fHA,4139 +ops/lib/__init__.py,sha256=QizPpuRWXjqbH5Gv7mnH8CcPR9BX7q2YNFnxyoSsA0g,9213 +ops/lib/__pycache__/__init__.cpython-38.pyc,, +ops/log.py,sha256=JVpt_Vkf_lWO2cucUcJfXjAWVTattk4xBscSs65Sn3I,2155 +ops/main.py,sha256=BUJZM4soFpsY4bO6zJ1bSHQeWJcm028gq0MhJT3rC8M,15523 +ops/model.py,sha256=yvM1yhidNyGpVdxkG365jPJRhQuE42EiiojBHJ7tL3c,47930 +ops/storage.py,sha256=jEfszzQGYDrl5wa03I6txvea-7lI661Yq6n7sIPa0fU,14192 +ops/testing.py,sha256=sH8PoNzGmfPdVWM1lBjStxHcNfQHsasFjF-WzHfDhFA,34898 +ops/version.py,sha256=UuaLFU_UN-InNFu4I23Y22huxQdbsOgTQ_d_r623fx4,46 diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/WHEEL b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/WHEEL new file mode 100644 index 00000000..b552003f --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.34.2) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/top_level.txt b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/top_level.txt new file mode 100644 index 00000000..2d81d3bb --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops-1.1.0.dist-info/top_level.txt @@ -0,0 +1 @@ +ops diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/__init__.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/__init__.py new file mode 100644 index 00000000..f17b2969 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/__init__.py @@ -0,0 +1,20 @@ +# Copyright 2020 Canonical Ltd. +# +# 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. + +"""The Operator Framework.""" + +from .version import version as __version__ # noqa: F401 (imported but unused) + +# Import here the bare minimum to break the circular import between modules +from . import charm # noqa: F401 (imported but unused) diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/charm.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/charm.py new file mode 100644 index 00000000..82ed2fdd --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/charm.py @@ -0,0 +1,823 @@ +# Copyright 2019-2020 Canonical Ltd. +# +# 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. + +"""Base objects for the Charm, events and metadata.""" + +import enum +import os +import pathlib +import typing + +import yaml + +from ops.framework import Object, EventSource, EventBase, Framework, ObjectEvents +from ops import model + + +def _loadYaml(source): + if yaml.__with_libyaml__: + return yaml.load(source, Loader=yaml.CSafeLoader) + return yaml.load(source, Loader=yaml.SafeLoader) + + +class HookEvent(EventBase): + """Events raised by Juju to progress a charm's lifecycle. + + Hooks are callback methods of a charm class (a subclass of + :class:`CharmBase`) that are invoked in response to events raised + by Juju. These callback methods are the means by which a charm + governs the lifecycle of its application. + + The :class:`HookEvent` class is the base of a type hierarchy of events + related to the charm's lifecycle. + + :class:`HookEvent` subtypes are grouped into the following categories + + - Core lifecycle events + - Relation events + - Storage events + - Metric events + """ + + +class ActionEvent(EventBase): + """Events raised by Juju when an administrator invokes a Juju Action. + + This class is the data type of events triggered when an administrator + invokes a Juju Action. Callbacks bound to these events may be used + for responding to the administrator's Juju Action request. + + To read the parameters for the action, see the instance variable :attr:`params`. + To respond with the result of the action, call :meth:`set_results`. To add + progress messages that are visible as the action is progressing use + :meth:`log`. + + Attributes: + params: The parameters passed to the action. + """ + + def defer(self): + """Action events are not deferable like other events. + + This is because an action runs synchronously and the administrator + is waiting for the result. + """ + raise RuntimeError('cannot defer action events') + + def restore(self, snapshot: dict) -> None: + """Used by the operator framework to record the action. + + Not meant to be called directly by charm code. + """ + env_action_name = os.environ.get('JUJU_ACTION_NAME') + event_action_name = self.handle.kind[:-len('_action')].replace('_', '-') + if event_action_name != env_action_name: + # This could only happen if the dev manually emits the action, or from a bug. + raise RuntimeError('action event kind does not match current action') + # Params are loaded at restore rather than __init__ because + # the model is not available in __init__. + self.params = self.framework.model._backend.action_get() + + def set_results(self, results: typing.Mapping) -> None: + """Report the result of the action. + + Args: + results: The result of the action as a Dict + """ + self.framework.model._backend.action_set(results) + + def log(self, message: str) -> None: + """Send a message that a user will see while the action is running. + + Args: + message: The message for the user. + """ + self.framework.model._backend.action_log(message) + + def fail(self, message: str = '') -> None: + """Report that this action has failed. + + Args: + message: Optional message to record why it has failed. + """ + self.framework.model._backend.action_fail(message) + + +class InstallEvent(HookEvent): + """Event triggered when a charm is installed. + + This event is triggered at the beginning of a charm's + lifecycle. Any associated callback method should be used to + perform one-time setup operations, such as installing prerequisite + software. + """ + + +class StartEvent(HookEvent): + """Event triggered immediately after first configuation change. + + This event is triggered immediately after the first + :class:`ConfigChangedEvent`. Callback methods bound to the event should be + used to ensure that the charm’s software is in a running state. Note that + the charm’s software should be configured so as to persist in this state + through reboots without further intervention on Juju’s part. + """ + + +class StopEvent(HookEvent): + """Event triggered when a charm is shut down. + + This event is triggered when an application's removal is requested + by the client. The event fires immediately before the end of the + unit’s destruction sequence. Callback methods bound to this event + should be used to ensure that the charm’s software is not running, + and that it will not start again on reboot. + """ + + +class RemoveEvent(HookEvent): + """Event triggered when a unit is about to be terminated. + + This event fires prior to Juju removing the charm and terminating its unit. + """ + + +class ConfigChangedEvent(HookEvent): + """Event triggered when a configuration change is requested. + + This event fires in several different situations. + + - immediately after the :class:`install <InstallEvent>` event. + - after a :class:`relation is created <RelationCreatedEvent>`. + - after a :class:`leader is elected <LeaderElectedEvent>`. + - after changing charm configuration using the GUI or command line + interface + - when the charm :class:`starts <StartEvent>`. + - when a new unit :class:`joins a relation <RelationJoinedEvent>`. + - when there is a :class:`change to an existing relation <RelationChangedEvent>`. + + Any callback method bound to this event cannot assume that the + software has already been started; it should not start stopped + software, but should (if appropriate) restart running software to + take configuration changes into account. + """ + + +class UpdateStatusEvent(HookEvent): + """Event triggered by a status update request from Juju. + + This event is periodically triggered by Juju so that it can + provide constant feedback to the administrator about the status of + the application the charm is modeling. Any callback method bound + to this event should determine the "health" of the application and + set the status appropriately. + + The interval between :class:`update-status <UpdateStatusEvent>` events can + be configured model-wide, e.g. ``juju model-config + update-status-hook-interval=1m``. + """ + + +class UpgradeCharmEvent(HookEvent): + """Event triggered by request to upgrade the charm. + + This event will be triggered when an administrator executes ``juju + upgrade-charm``. The event fires after Juju has unpacked the upgraded charm + code, and so this event will be handled by the callback method bound to the + event in the new codebase. The associated callback method is invoked + provided there is no existing error state. The callback method should be + used to reconcile current state written by an older version of the charm + into whatever form that is needed by the current charm version. + """ + + +class PreSeriesUpgradeEvent(HookEvent): + """Event triggered to prepare a unit for series upgrade. + + This event triggers when an administrator executes ``juju upgrade-series + MACHINE prepare``. The event will fire for each unit that is running on the + specified machine. Any callback method bound to this event must prepare the + charm for an upgrade to the series. This may include things like exporting + database content to a version neutral format, or evacuating running + instances to other machines. + + It can be assumed that only after all units on a machine have executed the + callback method associated with this event, the administrator will initiate + steps to actually upgrade the series. After the upgrade has been completed, + the :class:`PostSeriesUpgradeEvent` will fire. + """ + + +class PostSeriesUpgradeEvent(HookEvent): + """Event triggered after a series upgrade. + + This event is triggered after the administrator has done a distribution + upgrade (or rolled back and kept the same series). It is called in response + to ``juju upgrade-series MACHINE complete``. Associated charm callback + methods are expected to do whatever steps are necessary to reconfigure their + applications for the new series. This may include things like populating the + upgraded version of a database. Note however charms are expected to check if + the series has actually changed or whether it was rolled back to the + original series. + """ + + +class LeaderElectedEvent(HookEvent): + """Event triggered when a new leader has been elected. + + Juju will trigger this event when a new leader unit is chosen for + a given application. + + This event fires at least once after Juju selects a leader + unit. Callback methods bound to this event may take any action + required for the elected unit to assert leadership. Note that only + the elected leader unit will receive this event. + """ + + +class LeaderSettingsChangedEvent(HookEvent): + """Event triggered when leader changes any settings. + + DEPRECATED NOTICE + + This event has been deprecated in favor of using a Peer relation, + and having the leader set a value in the Application data bag for + that peer relation. (see :class:`RelationChangedEvent`). + """ + + +class CollectMetricsEvent(HookEvent): + """Event triggered by Juju to collect metrics. + + Juju fires this event every five minutes for the lifetime of the + unit. Callback methods bound to this event may use the :meth:`add_metrics` + method of this class to send measurements to Juju. + + Note that associated callback methods are currently sandboxed in + how they can interact with Juju. + """ + + def add_metrics(self, metrics: typing.Mapping, labels: typing.Mapping = None) -> None: + """Record metrics that have been gathered by the charm for this unit. + + Args: + metrics: A collection of {key: float} pairs that contains the + metrics that have been gathered + labels: {key:value} strings that can be applied to the + metrics that are being gathered + """ + self.framework.model._backend.add_metrics(metrics, labels) + + +class RelationEvent(HookEvent): + """A base class representing the various relation lifecycle events. + + Relation lifecycle events are generated when application units + participate in relations. Units can only participate in relations + after they have been "started", and before they have been + "stopped". Within that time window, the unit may participate in + several different relations at a time, including multiple + relations with the same name. + + Attributes: + relation: The :class:`~ops.model.Relation` involved in this event + app: The remote :class:`~ops.model.Application` that has triggered this + event + unit: The remote unit that has triggered this event. This may be + ``None`` if the relation event was triggered as an + :class:`~ops.model.Application` level event + + """ + + def __init__(self, handle, relation, app=None, unit=None): + super().__init__(handle) + + if unit is not None and unit.app != app: + raise RuntimeError( + 'cannot create RelationEvent with application {} and unit {}'.format(app, unit)) + + self.relation = relation + self.app = app + self.unit = unit + + def snapshot(self) -> dict: + """Used by the framework to serialize the event to disk. + + Not meant to be called by charm code. + """ + snapshot = { + 'relation_name': self.relation.name, + 'relation_id': self.relation.id, + } + if self.app: + snapshot['app_name'] = self.app.name + if self.unit: + snapshot['unit_name'] = self.unit.name + return snapshot + + def restore(self, snapshot: dict) -> None: + """Used by the framework to deserialize the event from disk. + + Not meant to be called by charm code. + """ + self.relation = self.framework.model.get_relation( + snapshot['relation_name'], snapshot['relation_id']) + + app_name = snapshot.get('app_name') + if app_name: + self.app = self.framework.model.get_app(app_name) + else: + self.app = None + + unit_name = snapshot.get('unit_name') + if unit_name: + self.unit = self.framework.model.get_unit(unit_name) + else: + self.unit = None + + +class RelationCreatedEvent(RelationEvent): + """Event triggered when a new relation is created. + + This is triggered when a new relation to another app is added in Juju. This + can occur before units for those applications have started. All existing + relations should be established before start. + """ + + +class RelationJoinedEvent(RelationEvent): + """Event triggered when a new unit joins a relation. + + This event is triggered whenever a new unit of a related + application joins the relation. The event fires only when that + remote unit is first observed by the unit. Callback methods bound + to this event may set any local unit settings that can be + determined using no more than the name of the joining unit and the + remote ``private-address`` setting, which is always available when + the relation is created and is by convention not deleted. + """ + + +class RelationChangedEvent(RelationEvent): + """Event triggered when relation data changes. + + This event is triggered whenever there is a change to the data bucket for a + related application or unit. Look at ``event.relation.data[event.unit/app]`` + to see the new information, where ``event`` is the event object passed to + the callback method bound to this event. + + This event always fires once, after :class:`RelationJoinedEvent`, and + will subsequently fire whenever that remote unit changes its settings for + the relation. Callback methods bound to this event should be the only ones + that rely on remote relation settings. They should not error if the settings + are incomplete, since it can be guaranteed that when the remote unit or + application changes its settings, the event will fire again. + + The settings that may be queried, or set, are determined by the relation’s + interface. + """ + + +class RelationDepartedEvent(RelationEvent): + """Event triggered when a unit leaves a relation. + + This is the inverse of the :class:`RelationJoinedEvent`, representing when a + unit is leaving the relation (the unit is being removed, the app is being + removed, the relation is being removed). It is fired once for each unit that + is going away. + + When the remote unit is known to be leaving the relation, this will result + in the :class:`RelationChangedEvent` firing at least once, after which the + :class:`RelationDepartedEvent` will fire. The :class:`RelationDepartedEvent` + will fire once only. Once the :class:`RelationDepartedEvent` has fired no + further :class:`RelationChangedEvent` will fire. + + Callback methods bound to this event may be used to remove all + references to the departing remote unit, because there’s no + guarantee that it’s still part of the system; it’s perfectly + probable (although not guaranteed) that the system running that + unit has already shut down. + + Once all callback methods bound to this event have been run for such a + relation, the unit agent will fire the :class:`RelationBrokenEvent`. + """ + + +class RelationBrokenEvent(RelationEvent): + """Event triggered when a relation is removed. + + If a relation is being removed (``juju remove-relation`` or ``juju + remove-application``), once all the units have been removed, this event will + fire to signal that the relationship has been fully terminated. + + The event indicates that the current relation is no longer valid, and that + the charm’s software must be configured as though the relation had never + existed. It will only be called after every callback method bound to + :class:`RelationDepartedEvent` has been run. If a callback method + bound to this event is being executed, it is gauranteed that no remote units + are currently known locally. + """ + + +class StorageEvent(HookEvent): + """Base class representing storage-related events. + + Juju can provide a variety of storage types to a charms. The + charms can define several different types of storage that are + allocated from Juju. Changes in state of storage trigger sub-types + of :class:`StorageEvent`. + """ + + +class StorageAttachedEvent(StorageEvent): + """Event triggered when new storage becomes available. + + This event is triggered when new storage is available for the + charm to use. + + Callback methods bound to this event allow the charm to run code + when storage has been added. Such methods will be run before the + :class:`InstallEvent` fires, so that the installation routine may + use the storage. The name prefix of this hook will depend on the + storage key defined in the ``metadata.yaml`` file. + """ + + +class StorageDetachingEvent(StorageEvent): + """Event triggered prior to removal of storage. + + This event is triggered when storage a charm has been using is + going away. + + Callback methods bound to this event allow the charm to run code + before storage is removed. Such methods will be run before storage + is detached, and always before the :class:`StopEvent` fires, thereby + allowing the charm to gracefully release resources before they are + removed and before the unit terminates. The name prefix of the + hook will depend on the storage key defined in the ``metadata.yaml`` + file. + """ + + +class CharmEvents(ObjectEvents): + """Events generated by Juju pertaining to application lifecycle. + + This class is used to create an event descriptor (``self.on``) attribute for + a charm class that inherits from :class:`CharmBase`. The event descriptor + may be used to set up event handlers for corresponding events. + + By default the following events will be provided through + :class:`CharmBase`:: + + self.on.install + self.on.start + self.on.remove + self.on.update_status + self.on.config_changed + self.on.upgrade_charm + self.on.pre_series_upgrade + self.on.post_series_upgrade + self.on.leader_elected + self.on.collect_metrics + + + In addition to these, depending on the charm's metadata (``metadata.yaml``), + named relation and storage events may also be defined. These named events + are created by :class:`CharmBase` using charm metadata. The named events may be + accessed as ``self.on[<name>].<relation_or_storage_event>`` + """ + + install = EventSource(InstallEvent) + start = EventSource(StartEvent) + stop = EventSource(StopEvent) + remove = EventSource(RemoveEvent) + update_status = EventSource(UpdateStatusEvent) + config_changed = EventSource(ConfigChangedEvent) + upgrade_charm = EventSource(UpgradeCharmEvent) + pre_series_upgrade = EventSource(PreSeriesUpgradeEvent) + post_series_upgrade = EventSource(PostSeriesUpgradeEvent) + leader_elected = EventSource(LeaderElectedEvent) + leader_settings_changed = EventSource(LeaderSettingsChangedEvent) + collect_metrics = EventSource(CollectMetricsEvent) + + +class CharmBase(Object): + """Base class that represents the charm overall. + + :class:`CharmBase` is used to create a charm. This is done by inheriting + from :class:`CharmBase` and customising the sub class as required. So to + create your own charm, say ``MyCharm``, define a charm class and set up the + required event handlers (“hooksâ€) in its constructor:: + + import logging + + from ops.charm import CharmBase + from ops.main import main + + logger = logging.getLogger(__name__) + + def MyCharm(CharmBase): + def __init__(self, *args): + logger.debug('Initializing Charm') + + super().__init__(*args) + + self.framework.observe(self.on.config_changed, self._on_config_changed) + self.framework.observe(self.on.stop, self._on_stop) + # ... + + if __name__ == "__main__": + main(MyCharm) + + As shown in the example above, a charm class is instantiated by + :func:`~ops.main.main` rather than charm authors directly instantiating a + charm. + + Args: + framework: The framework responsible for managing the Model and events for this + charm. + key: Ignored; will remove after deprecation period of the signature change. + + """ + + # note that without the #: below, sphinx will copy the whole of CharmEvents + # docstring inline which is less than ideal. + #: Used to set up event handlers; see :class:`CharmEvents`. + on = CharmEvents() + + def __init__(self, framework: Framework, key: typing.Optional = None): + super().__init__(framework, None) + + for relation_name in self.framework.meta.relations: + relation_name = relation_name.replace('-', '_') + self.on.define_event(relation_name + '_relation_created', RelationCreatedEvent) + self.on.define_event(relation_name + '_relation_joined', RelationJoinedEvent) + self.on.define_event(relation_name + '_relation_changed', RelationChangedEvent) + self.on.define_event(relation_name + '_relation_departed', RelationDepartedEvent) + self.on.define_event(relation_name + '_relation_broken', RelationBrokenEvent) + + for storage_name in self.framework.meta.storages: + storage_name = storage_name.replace('-', '_') + self.on.define_event(storage_name + '_storage_attached', StorageAttachedEvent) + self.on.define_event(storage_name + '_storage_detaching', StorageDetachingEvent) + + for action_name in self.framework.meta.actions: + action_name = action_name.replace('-', '_') + self.on.define_event(action_name + '_action', ActionEvent) + + @property + def app(self) -> model.Application: + """Application that this unit is part of.""" + return self.framework.model.app + + @property + def unit(self) -> model.Unit: + """Unit that this execution is responsible for.""" + return self.framework.model.unit + + @property + def meta(self) -> 'CharmMeta': + """Metadata of this charm.""" + return self.framework.meta + + @property + def charm_dir(self) -> pathlib.Path: + """Root directory of the charm as it is running.""" + return self.framework.charm_dir + + @property + def config(self) -> model.ConfigData: + """A mapping containing the charm's config and current values.""" + return self.model.config + + +class CharmMeta: + """Object containing the metadata for the charm. + + This is read from ``metadata.yaml`` and/or ``actions.yaml``. Generally + charms will define this information, rather than reading it at runtime. This + class is mostly for the framework to understand what the charm has defined. + + The :attr:`maintainers`, :attr:`tags`, :attr:`terms`, :attr:`series`, and + :attr:`extra_bindings` attributes are all lists of strings. The + :attr:`requires`, :attr:`provides`, :attr:`peers`, :attr:`relations`, + :attr:`storages`, :attr:`resources`, and :attr:`payloads` attributes are all + mappings of names to instances of the respective :class:`RelationMeta`, + :class:`StorageMeta`, :class:`ResourceMeta`, or :class:`PayloadMeta`. + + The :attr:`relations` attribute is a convenience accessor which includes all + of the ``requires``, ``provides``, and ``peers`` :class:`RelationMeta` + items. If needed, the role of the relation definition can be obtained from + its :attr:`role <RelationMeta.role>` attribute. + + Attributes: + name: The name of this charm + summary: Short description of what this charm does + description: Long description for this charm + maintainers: A list of strings of the email addresses of the maintainers + of this charm. + tags: Charm store tag metadata for categories associated with this charm. + terms: Charm store terms that should be agreed to before this charm can + be deployed. (Used for things like licensing issues.) + series: The list of supported OS series that this charm can support. + The first entry in the list is the default series that will be + used by deploy if no other series is requested by the user. + subordinate: True/False whether this charm is intended to be used as a + subordinate charm. + min_juju_version: If supplied, indicates this charm needs features that + are not available in older versions of Juju. + requires: A dict of {name: :class:`RelationMeta` } for each 'requires' relation. + provides: A dict of {name: :class:`RelationMeta` } for each 'provides' relation. + peers: A dict of {name: :class:`RelationMeta` } for each 'peer' relation. + relations: A dict containing all :class:`RelationMeta` attributes (merged from other + sections) + storages: A dict of {name: :class:`StorageMeta`} for each defined storage. + resources: A dict of {name: :class:`ResourceMeta`} for each defined resource. + payloads: A dict of {name: :class:`PayloadMeta`} for each defined payload. + extra_bindings: A dict of additional named bindings that a charm can use + for network configuration. + actions: A dict of {name: :class:`ActionMeta`} for actions that the charm has defined. + Args: + raw: a mapping containing the contents of metadata.yaml + actions_raw: a mapping containing the contents of actions.yaml + + """ + + def __init__(self, raw: dict = {}, actions_raw: dict = {}): + self.name = raw.get('name', '') + self.summary = raw.get('summary', '') + self.description = raw.get('description', '') + self.maintainers = [] + if 'maintainer' in raw: + self.maintainers.append(raw['maintainer']) + if 'maintainers' in raw: + self.maintainers.extend(raw['maintainers']) + self.tags = raw.get('tags', []) + self.terms = raw.get('terms', []) + self.series = raw.get('series', []) + self.subordinate = raw.get('subordinate', False) + self.min_juju_version = raw.get('min-juju-version') + self.requires = {name: RelationMeta(RelationRole.requires, name, rel) + for name, rel in raw.get('requires', {}).items()} + self.provides = {name: RelationMeta(RelationRole.provides, name, rel) + for name, rel in raw.get('provides', {}).items()} + self.peers = {name: RelationMeta(RelationRole.peer, name, rel) + for name, rel in raw.get('peers', {}).items()} + self.relations = {} + self.relations.update(self.requires) + self.relations.update(self.provides) + self.relations.update(self.peers) + self.storages = {name: StorageMeta(name, storage) + for name, storage in raw.get('storage', {}).items()} + self.resources = {name: ResourceMeta(name, res) + for name, res in raw.get('resources', {}).items()} + self.payloads = {name: PayloadMeta(name, payload) + for name, payload in raw.get('payloads', {}).items()} + self.extra_bindings = raw.get('extra-bindings', {}) + self.actions = {name: ActionMeta(name, action) for name, action in actions_raw.items()} + + @classmethod + def from_yaml( + cls, metadata: typing.Union[str, typing.TextIO], + actions: typing.Optional[typing.Union[str, typing.TextIO]] = None): + """Instantiate a CharmMeta from a YAML description of metadata.yaml. + + Args: + metadata: A YAML description of charm metadata (name, relations, etc.) + This can be a simple string, or a file-like object. (passed to `yaml.safe_load`). + actions: YAML description of Actions for this charm (eg actions.yaml) + """ + meta = _loadYaml(metadata) + raw_actions = {} + if actions is not None: + raw_actions = _loadYaml(actions) + if raw_actions is None: + raw_actions = {} + return cls(meta, raw_actions) + + +class RelationRole(enum.Enum): + """An annotation for a charm's role in a relation. + + For each relation a charm's role may be + + - A Peer + - A service consumer in the relation ('requires') + - A service provider in the relation ('provides') + """ + peer = 'peer' + requires = 'requires' + provides = 'provides' + + def is_peer(self) -> bool: + """Return whether the current role is peer. + + A convenience to avoid having to import charm. + """ + return self is RelationRole.peer + + +class RelationMeta: + """Object containing metadata about a relation definition. + + Should not be constructed directly by charm code. Is gotten from one of + :attr:`CharmMeta.peers`, :attr:`CharmMeta.requires`, :attr:`CharmMeta.provides`, + or :attr:`CharmMeta.relations`. + + Attributes: + role: This is :class:`RelationRole`; one of peer/requires/provides + relation_name: Name of this relation from metadata.yaml + interface_name: Optional definition of the interface protocol. + scope: "global" or "container" scope based on how the relation should be used. + """ + + def __init__(self, role: RelationRole, relation_name: str, raw: dict): + if not isinstance(role, RelationRole): + raise TypeError("role should be a Role, not {!r}".format(role)) + self.role = role + self.relation_name = relation_name + self.interface_name = raw['interface'] + self.scope = raw.get('scope') + + +class StorageMeta: + """Object containing metadata about a storage definition. + + Attributes: + storage_name: Name of storage + type: Storage type + description: A text description of the storage + read_only: Whether or not the storage is read only + minimum_size: Minimum size of storage + location: Mount point of storage + multiple_range: Range of numeric qualifiers when multiple storage units are used + """ + + def __init__(self, name, raw): + self.storage_name = name + self.type = raw['type'] + self.description = raw.get('description', '') + self.shared = raw.get('shared', False) + self.read_only = raw.get('read-only', False) + self.minimum_size = raw.get('minimum-size') + self.location = raw.get('location') + self.multiple_range = None + if 'multiple' in raw: + range = raw['multiple']['range'] + if '-' not in range: + self.multiple_range = (int(range), int(range)) + else: + range = range.split('-') + self.multiple_range = (int(range[0]), int(range[1]) if range[1] else None) + + +class ResourceMeta: + """Object containing metadata about a resource definition. + + Attributes: + resource_name: Name of resource + filename: Name of file + description: A text description of resource + """ + + def __init__(self, name, raw): + self.resource_name = name + self.type = raw['type'] + self.filename = raw.get('filename', None) + self.description = raw.get('description', '') + + +class PayloadMeta: + """Object containing metadata about a payload definition. + + Attributes: + payload_name: Name of payload + type: Payload type + """ + + def __init__(self, name, raw): + self.payload_name = name + self.type = raw['type'] + + +class ActionMeta: + """Object containing metadata about an action's definition.""" + + def __init__(self, name, raw=None): + raw = raw or {} + self.name = name + self.title = raw.get('title', '') + self.description = raw.get('description', '') + self.parameters = raw.get('params', {}) # {<parameter name>: <JSON Schema definition>} + self.required = raw.get('required', []) # [<parameter name>, ...] diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/framework.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/framework.py new file mode 100644 index 00000000..d20c0007 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/framework.py @@ -0,0 +1,1199 @@ +# Copyright 2020 Canonical Ltd. +# +# 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. + +"""The Operator Framework infrastructure.""" + +import collections +import collections.abc +import inspect +import keyword +import logging +import marshal +import os +import pathlib +import pdb +import re +import sys +import types +import weakref + +from ops import charm +from ops.storage import ( + NoSnapshotError, + SQLiteStorage, +) + +logger = logging.getLogger(__name__) + + +class Handle: + """Handle defines a name for an object in the form of a hierarchical path. + + The provided parent is the object (or that object's handle) that this handle + sits under, or None if the object identified by this handle stands by itself + as the root of its own hierarchy. + + The handle kind is a string that defines a namespace so objects with the + same parent and kind will have unique keys. + + The handle key is a string uniquely identifying the object. No other objects + under the same parent and kind may have the same key. + """ + + def __init__(self, parent, kind, key): + if parent and not isinstance(parent, Handle): + parent = parent.handle + self._parent = parent + self._kind = kind + self._key = key + if parent: + if key: + self._path = "{}/{}[{}]".format(parent, kind, key) + else: + self._path = "{}/{}".format(parent, kind) + else: + if key: + self._path = "{}[{}]".format(kind, key) + else: + self._path = "{}".format(kind) + + def nest(self, kind, key): + """Create a new handle as child of the current one.""" + return Handle(self, kind, key) + + def __hash__(self): + return hash((self.parent, self.kind, self.key)) + + def __eq__(self, other): + return (self.parent, self.kind, self.key) == (other.parent, other.kind, other.key) + + def __str__(self): + return self.path + + @property + def parent(self): + """Return own parent handle.""" + return self._parent + + @property + def kind(self): + """Return the handle's kind.""" + return self._kind + + @property + def key(self): + """Return the handle's key.""" + return self._key + + @property + def path(self): + """Return the handle's path.""" + return self._path + + @classmethod + def from_path(cls, path): + """Build a handle from the indicated path.""" + handle = None + for pair in path.split("/"): + pair = pair.split("[") + good = False + if len(pair) == 1: + kind, key = pair[0], None + good = True + elif len(pair) == 2: + kind, key = pair + if key and key[-1] == ']': + key = key[:-1] + good = True + if not good: + raise RuntimeError("attempted to restore invalid handle path {}".format(path)) + handle = Handle(handle, kind, key) + return handle + + +class EventBase: + """The base for all the different Events. + + Inherit this and override 'snapshot' and 'restore' methods to build a custom event. + """ + + def __init__(self, handle): + self.handle = handle + self.deferred = False + + def __repr__(self): + return "<%s via %s>" % (self.__class__.__name__, self.handle) + + def defer(self): + """Defer the event to the future. + + Deferring an event from a handler puts that handler into a queue, to be + called again the next time the charm is invoked. This invocation may be + the result of an action, or any event other than metric events. The + queue of events will be dispatched before the new event is processed. + + From the above you may deduce, but it's important to point out: + + * ``defer()`` does not interrupt the execution of the current event + handler. In almost all cases, a call to ``defer()`` should be followed + by an explicit ``return`` from the handler; + + * the re-execution of the deferred event handler starts from the top of + the handler method (not where defer was called); + + * only the handlers that actually called ``defer()`` are called again + (that is: despite talking about “deferring an event†it is actually + the handler/event combination that is deferred); and + + * any deferred events get processed before the event (or action) that + caused the current invocation of the charm. + + The general desire to call ``defer()`` happens when some precondition + isn't yet met. However, care should be exercised as to whether it is + better to defer this event so that you see it again, or whether it is + better to just wait for the event that indicates the precondition has + been met. + + For example, if ``config-changed`` is fired, and you are waiting for + different config, there is no reason to defer the event because there + will be a *different* ``config-changed`` event when the config actually + changes, rather than checking to see if maybe config has changed prior + to every other event that occurs. + + Similarly, if you need 2 events to occur before you are ready to + proceed (say event A and B). When you see event A, you could chose to + ``defer()`` it because you haven't seen B yet. However, that leads to: + + 1. event A fires, calls defer() + + 2. event B fires, event A handler is called first, still hasn't seen B + happen, so is deferred again. Then B happens, which progresses since + it has seen A. + + 3. At some future time, event C happens, which also checks if A can + proceed. + + """ + logger.debug("Deferring %s.", self) + self.deferred = True + + def snapshot(self): + """Return the snapshot data that should be persisted. + + Subclasses must override to save any custom state. + """ + return None + + def restore(self, snapshot): + """Restore the value state from the given snapshot. + + Subclasses must override to restore their custom state. + """ + self.deferred = False + + +class EventSource: + """EventSource wraps an event type with a descriptor to facilitate observing and emitting. + + It is generally used as: + + class SomethingHappened(EventBase): + pass + + class SomeObject(Object): + something_happened = EventSource(SomethingHappened) + + With that, instances of that type will offer the someobj.something_happened + attribute which is a BoundEvent and may be used to emit and observe the event. + """ + + def __init__(self, event_type): + if not isinstance(event_type, type) or not issubclass(event_type, EventBase): + raise RuntimeError( + 'Event requires a subclass of EventBase as an argument, got {}'.format(event_type)) + self.event_type = event_type + self.event_kind = None + self.emitter_type = None + + def _set_name(self, emitter_type, event_kind): + if self.event_kind is not None: + raise RuntimeError( + 'EventSource({}) reused as {}.{} and {}.{}'.format( + self.event_type.__name__, + self.emitter_type.__name__, + self.event_kind, + emitter_type.__name__, + event_kind, + )) + self.event_kind = event_kind + self.emitter_type = emitter_type + + def __get__(self, emitter, emitter_type=None): + if emitter is None: + return self + # Framework might not be available if accessed as CharmClass.on.event + # rather than charm_instance.on.event, but in that case it couldn't be + # emitted anyway, so there's no point to registering it. + framework = getattr(emitter, 'framework', None) + if framework is not None: + framework.register_type(self.event_type, emitter, self.event_kind) + return BoundEvent(emitter, self.event_type, self.event_kind) + + +class BoundEvent: + """Event bound to an Object.""" + + def __repr__(self): + return '<BoundEvent {} bound to {}.{} at {}>'.format( + self.event_type.__name__, + type(self.emitter).__name__, + self.event_kind, + hex(id(self)), + ) + + def __init__(self, emitter, event_type, event_kind): + self.emitter = emitter + self.event_type = event_type + self.event_kind = event_kind + + def emit(self, *args, **kwargs): + """Emit event to all registered observers. + + The current storage state is committed before and after each observer is notified. + """ + framework = self.emitter.framework + key = framework._next_event_key() + event = self.event_type(Handle(self.emitter, self.event_kind, key), *args, **kwargs) + framework._emit(event) + + +class HandleKind: + """Helper descriptor to define the Object.handle_kind field. + + The handle_kind for an object defaults to its type name, but it may + be explicitly overridden if desired. + """ + + def __get__(self, obj, obj_type): + kind = obj_type.__dict__.get("handle_kind") + if kind: + return kind + return obj_type.__name__ + + +class _Metaclass(type): + """Helper class to ensure proper instantiation of Object-derived classes. + + This class currently has a single purpose: events derived from EventSource + that are class attributes of Object-derived classes need to be told what + their name is in that class. For example, in + + class SomeObject(Object): + something_happened = EventSource(SomethingHappened) + + the instance of EventSource needs to know it's called 'something_happened'. + + Starting from python 3.6 we could use __set_name__ on EventSource for this, + but until then this (meta)class does the equivalent work. + + TODO: when we drop support for 3.5 drop this class, and rename _set_name in + EventSource to __set_name__; everything should continue to work. + + """ + + def __new__(typ, *a, **kw): + k = super().__new__(typ, *a, **kw) + # k is now the Object-derived class; loop over its class attributes + for n, v in vars(k).items(): + # we could do duck typing here if we want to support + # non-EventSource-derived shenanigans. We don't. + if isinstance(v, EventSource): + # this is what 3.6+ does automatically for us: + v._set_name(k, n) + return k + + +class Object(metaclass=_Metaclass): + """Base class of all the charm-related objects.""" + + handle_kind = HandleKind() + + def __init__(self, parent, key): + kind = self.handle_kind + if isinstance(parent, Framework): + self.framework = parent + # Avoid Framework instances having a circular reference to themselves. + if self.framework is self: + self.framework = weakref.proxy(self.framework) + self.handle = Handle(None, kind, key) + else: + self.framework = parent.framework + self.handle = Handle(parent, kind, key) + self.framework._track(self) + + # TODO Detect conflicting handles here. + + @property + def model(self): + """Shortcut for more simple access the model.""" + return self.framework.model + + +class ObjectEvents(Object): + """Convenience type to allow defining .on attributes at class level.""" + + handle_kind = "on" + + def __init__(self, parent=None, key=None): + if parent is not None: + super().__init__(parent, key) + else: + self._cache = weakref.WeakKeyDictionary() + + def __get__(self, emitter, emitter_type): + if emitter is None: + return self + instance = self._cache.get(emitter) + if instance is None: + # Same type, different instance, more data. Doing this unusual construct + # means people can subclass just this one class to have their own 'on'. + instance = self._cache[emitter] = type(self)(emitter) + return instance + + @classmethod + def define_event(cls, event_kind, event_type): + """Define an event on this type at runtime. + + cls: a type to define an event on. + + event_kind: an attribute name that will be used to access the + event. Must be a valid python identifier, not be a keyword + or an existing attribute. + + event_type: a type of the event to define. + + """ + prefix = 'unable to define an event with event_kind that ' + if not event_kind.isidentifier(): + raise RuntimeError(prefix + 'is not a valid python identifier: ' + event_kind) + elif keyword.iskeyword(event_kind): + raise RuntimeError(prefix + 'is a python keyword: ' + event_kind) + try: + getattr(cls, event_kind) + raise RuntimeError( + prefix + 'overlaps with an existing type {} attribute: {}'.format(cls, event_kind)) + except AttributeError: + pass + + event_descriptor = EventSource(event_type) + event_descriptor._set_name(cls, event_kind) + setattr(cls, event_kind, event_descriptor) + + def _event_kinds(self): + event_kinds = [] + # We have to iterate over the class rather than instance to allow for properties which + # might call this method (e.g., event views), leading to infinite recursion. + for attr_name, attr_value in inspect.getmembers(type(self)): + if isinstance(attr_value, EventSource): + # We actually care about the bound_event, however, since it + # provides the most info for users of this method. + event_kinds.append(attr_name) + return event_kinds + + def events(self): + """Return a mapping of event_kinds to bound_events for all available events.""" + return {event_kind: getattr(self, event_kind) for event_kind in self._event_kinds()} + + def __getitem__(self, key): + return PrefixedEvents(self, key) + + def __repr__(self): + k = type(self) + event_kinds = ', '.join(sorted(self._event_kinds())) + return '<{}.{}: {}>'.format(k.__module__, k.__qualname__, event_kinds) + + +class PrefixedEvents: + """Events to be found in all events using a specific prefix.""" + + def __init__(self, emitter, key): + self._emitter = emitter + self._prefix = key.replace("-", "_") + '_' + + def __getattr__(self, name): + return getattr(self._emitter, self._prefix + name) + + +class PreCommitEvent(EventBase): + """Events that will be emited first on commit.""" + + +class CommitEvent(EventBase): + """Events that will be emited second on commit.""" + + +class FrameworkEvents(ObjectEvents): + """Manager of all framework events.""" + pre_commit = EventSource(PreCommitEvent) + commit = EventSource(CommitEvent) + + +class NoTypeError(Exception): + """No class to hold it was found when restoring an event.""" + + def __init__(self, handle_path): + self.handle_path = handle_path + + def __str__(self): + return "cannot restore {} since no class was registered for it".format(self.handle_path) + + +# the message to show to the user when a pdb breakpoint goes active +_BREAKPOINT_WELCOME_MESSAGE = """ +Starting pdb to debug charm operator. +Run `h` for help, `c` to continue, or `exit`/CTRL-d to abort. +Future breakpoints may interrupt execution again. +More details at https://discourse.jujucharms.com/t/debugging-charm-hooks + +""" + + +_event_regex = r'^(|.*/)on/[a-zA-Z_]+\[\d+\]$' + + +class Framework(Object): + """Main interface to from the Charm to the Operator Framework internals.""" + + on = FrameworkEvents() + + # Override properties from Object so that we can set them in __init__. + model = None + meta = None + charm_dir = None + + def __init__(self, storage, charm_dir, meta, model): + + super().__init__(self, None) + + self.charm_dir = charm_dir + self.meta = meta + self.model = model + self._observers = [] # [(observer_path, method_name, parent_path, event_key)] + self._observer = weakref.WeakValueDictionary() # {observer_path: observer} + self._objects = weakref.WeakValueDictionary() + self._type_registry = {} # {(parent_path, kind): cls} + self._type_known = set() # {cls} + + if isinstance(storage, (str, pathlib.Path)): + logger.warning( + "deprecated: Framework now takes a Storage not a path") + storage = SQLiteStorage(storage) + self._storage = storage + + # We can't use the higher-level StoredState because it relies on events. + self.register_type(StoredStateData, None, StoredStateData.handle_kind) + stored_handle = Handle(None, StoredStateData.handle_kind, '_stored') + try: + self._stored = self.load_snapshot(stored_handle) + except NoSnapshotError: + self._stored = StoredStateData(self, '_stored') + self._stored['event_count'] = 0 + + # Flag to indicate that we already presented the welcome message in a debugger breakpoint + self._breakpoint_welcomed = False + + # Parse the env var once, which may be used multiple times later + debug_at = os.environ.get('JUJU_DEBUG_AT') + self._juju_debug_at = debug_at.split(',') if debug_at else () + + def set_breakpointhook(self): + """Hook into sys.breakpointhook so the builtin breakpoint() works as expected. + + This method is called by ``main``, and is not intended to be + called by users of the framework itself outside of perhaps + some testing scenarios. + + It returns the old value of sys.excepthook. + + The breakpoint function is a Python >= 3.7 feature. + + This method was added in ops 1.0; before that, it was done as + part of the Framework's __init__. + """ + old_breakpointhook = getattr(sys, 'breakpointhook', None) + if old_breakpointhook is not None: + # Hook into builtin breakpoint, so if Python >= 3.7, devs will be able to just do + # breakpoint() + sys.breakpointhook = self.breakpoint + return old_breakpointhook + + def close(self): + """Close the underlying backends.""" + self._storage.close() + + def _track(self, obj): + """Track object and ensure it is the only object created using its handle path.""" + if obj is self: + # Framework objects don't track themselves + return + if obj.handle.path in self.framework._objects: + raise RuntimeError( + 'two objects claiming to be {} have been created'.format(obj.handle.path)) + self._objects[obj.handle.path] = obj + + def _forget(self, obj): + """Stop tracking the given object. See also _track.""" + self._objects.pop(obj.handle.path, None) + + def commit(self): + """Save changes to the underlying backends.""" + # Give a chance for objects to persist data they want to before a commit is made. + self.on.pre_commit.emit() + # Make sure snapshots are saved by instances of StoredStateData. Any possible state + # modifications in on_commit handlers of instances of other classes will not be persisted. + self.on.commit.emit() + # Save our event count after all events have been emitted. + self.save_snapshot(self._stored) + self._storage.commit() + + def register_type(self, cls, parent, kind=None): + """Register a type to a handle.""" + if parent and not isinstance(parent, Handle): + parent = parent.handle + if parent: + parent_path = parent.path + else: + parent_path = None + if not kind: + kind = cls.handle_kind + self._type_registry[(parent_path, kind)] = cls + self._type_known.add(cls) + + def save_snapshot(self, value): + """Save a persistent snapshot of the provided value. + + The provided value must implement the following interface: + + value.handle = Handle(...) + value.snapshot() => {...} # Simple builtin types only. + value.restore(snapshot) # Restore custom state from prior snapshot. + """ + if type(value) not in self._type_known: + raise RuntimeError( + 'cannot save {} values before registering that type'.format(type(value).__name__)) + data = value.snapshot() + + # Use marshal as a validator, enforcing the use of simple types, as we later the + # information is really pickled, which is too error prone for future evolution of the + # stored data (e.g. if the developer stores a custom object and later changes its + # class name; when unpickling the original class will not be there and event + # data loading will fail). + try: + marshal.dumps(data) + except ValueError: + msg = "unable to save the data for {}, it must contain only simple types: {!r}" + raise ValueError(msg.format(value.__class__.__name__, data)) + + self._storage.save_snapshot(value.handle.path, data) + + def load_snapshot(self, handle): + """Load a persistent snapshot.""" + parent_path = None + if handle.parent: + parent_path = handle.parent.path + cls = self._type_registry.get((parent_path, handle.kind)) + if not cls: + raise NoTypeError(handle.path) + data = self._storage.load_snapshot(handle.path) + obj = cls.__new__(cls) + obj.framework = self + obj.handle = handle + obj.restore(data) + self._track(obj) + return obj + + def drop_snapshot(self, handle): + """Discard a persistent snapshot.""" + self._storage.drop_snapshot(handle.path) + + def observe(self, bound_event: BoundEvent, observer: types.MethodType): + """Register observer to be called when bound_event is emitted. + + The bound_event is generally provided as an attribute of the object that emits + the event, and is created in this style:: + + class SomeObject: + something_happened = Event(SomethingHappened) + + That event may be observed as:: + + framework.observe(someobj.something_happened, self._on_something_happened) + + Raises: + RuntimeError: if bound_event or observer are the wrong type. + """ + if not isinstance(bound_event, BoundEvent): + raise RuntimeError( + 'Framework.observe requires a BoundEvent as second parameter, got {}'.format( + bound_event)) + if not isinstance(observer, types.MethodType): + # help users of older versions of the framework + if isinstance(observer, charm.CharmBase): + raise TypeError( + 'observer methods must now be explicitly provided;' + ' please replace observe(self.on.{0}, self)' + ' with e.g. observe(self.on.{0}, self._on_{0})'.format( + bound_event.event_kind)) + raise RuntimeError( + 'Framework.observe requires a method as third parameter, got {}'.format(observer)) + + event_type = bound_event.event_type + event_kind = bound_event.event_kind + emitter = bound_event.emitter + + self.register_type(event_type, emitter, event_kind) + + if hasattr(emitter, "handle"): + emitter_path = emitter.handle.path + else: + raise RuntimeError( + 'event emitter {} must have a "handle" attribute'.format(type(emitter).__name__)) + + # Validate that the method has an acceptable call signature. + sig = inspect.signature(observer) + # Self isn't included in the params list, so the first arg will be the event. + extra_params = list(sig.parameters.values())[1:] + + method_name = observer.__name__ + observer = observer.__self__ + if not sig.parameters: + raise TypeError( + '{}.{} must accept event parameter'.format(type(observer).__name__, method_name)) + elif any(param.default is inspect.Parameter.empty for param in extra_params): + # Allow for additional optional params, since there's no reason to exclude them, but + # required params will break. + raise TypeError( + '{}.{} has extra required parameter'.format(type(observer).__name__, method_name)) + + # TODO Prevent the exact same parameters from being registered more than once. + + self._observer[observer.handle.path] = observer + self._observers.append((observer.handle.path, method_name, emitter_path, event_kind)) + + def _next_event_key(self): + """Return the next event key that should be used, incrementing the internal counter.""" + # Increment the count first; this means the keys will start at 1, and 0 + # means no events have been emitted. + self._stored['event_count'] += 1 + return str(self._stored['event_count']) + + def _emit(self, event): + """See BoundEvent.emit for the public way to call this.""" + saved = False + event_path = event.handle.path + event_kind = event.handle.kind + parent_path = event.handle.parent.path + # TODO Track observers by (parent_path, event_kind) rather than as a list of + # all observers. Avoiding linear search through all observers for every event + for observer_path, method_name, _parent_path, _event_kind in self._observers: + if _parent_path != parent_path: + continue + if _event_kind and _event_kind != event_kind: + continue + if not saved: + # Save the event for all known observers before the first notification + # takes place, so that either everyone interested sees it, or nobody does. + self.save_snapshot(event) + saved = True + # Again, only commit this after all notices are saved. + self._storage.save_notice(event_path, observer_path, method_name) + if saved: + self._reemit(event_path) + + def reemit(self): + """Reemit previously deferred events to the observers that deferred them. + + Only the specific observers that have previously deferred the event will be + notified again. Observers that asked to be notified about events after it's + been first emitted won't be notified, as that would mean potentially observing + events out of order. + """ + self._reemit() + + def _reemit(self, single_event_path=None): + last_event_path = None + deferred = True + for event_path, observer_path, method_name in self._storage.notices(single_event_path): + event_handle = Handle.from_path(event_path) + + if last_event_path != event_path: + if not deferred and last_event_path is not None: + self._storage.drop_snapshot(last_event_path) + last_event_path = event_path + deferred = False + + try: + event = self.load_snapshot(event_handle) + except NoTypeError: + self._storage.drop_notice(event_path, observer_path, method_name) + continue + + event.deferred = False + observer = self._observer.get(observer_path) + if observer: + if single_event_path is None: + logger.debug("Re-emitting %s.", event) + custom_handler = getattr(observer, method_name, None) + if custom_handler: + event_is_from_juju = isinstance(event, charm.HookEvent) + event_is_action = isinstance(event, charm.ActionEvent) + if (event_is_from_juju or event_is_action) and 'hook' in self._juju_debug_at: + # Present the welcome message and run under PDB. + self._show_debug_code_message() + pdb.runcall(custom_handler, event) + else: + # Regular call to the registered method. + custom_handler(event) + + if event.deferred: + deferred = True + else: + self._storage.drop_notice(event_path, observer_path, method_name) + # We intentionally consider this event to be dead and reload it from + # scratch in the next path. + self.framework._forget(event) + + if not deferred and last_event_path is not None: + self._storage.drop_snapshot(last_event_path) + + def _show_debug_code_message(self): + """Present the welcome message (only once!) when using debugger functionality.""" + if not self._breakpoint_welcomed: + self._breakpoint_welcomed = True + print(_BREAKPOINT_WELCOME_MESSAGE, file=sys.stderr, end='') + + def breakpoint(self, name=None): + """Add breakpoint, optionally named, at the place where this method is called. + + For the breakpoint to be activated the JUJU_DEBUG_AT environment variable + must be set to "all" or to the specific name parameter provided, if any. In every + other situation calling this method does nothing. + + The framework also provides a standard breakpoint named "hook", that will + stop execution when a hook event is about to be handled. + + For those reasons, the "all" and "hook" breakpoint names are reserved. + """ + # If given, validate the name comply with all the rules + if name is not None: + if not isinstance(name, str): + raise TypeError('breakpoint names must be strings') + if name in ('hook', 'all'): + raise ValueError('breakpoint names "all" and "hook" are reserved') + if not re.match(r'^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$', name): + raise ValueError('breakpoint names must look like "foo" or "foo-bar"') + + indicated_breakpoints = self._juju_debug_at + if not indicated_breakpoints: + return + + if 'all' in indicated_breakpoints or name in indicated_breakpoints: + self._show_debug_code_message() + + # If we call set_trace() directly it will open the debugger *here*, so indicating + # it to use our caller's frame + code_frame = inspect.currentframe().f_back + pdb.Pdb().set_trace(code_frame) + else: + logger.warning( + "Breakpoint %r skipped (not found in the requested breakpoints: %s)", + name, indicated_breakpoints) + + def remove_unreferenced_events(self): + """Remove events from storage that are not referenced. + + In older versions of the framework, events that had no observers would get recorded but + never deleted. This makes a best effort to find these events and remove them from the + database. + """ + event_regex = re.compile(_event_regex) + to_remove = [] + for handle_path in self._storage.list_snapshots(): + if event_regex.match(handle_path): + notices = self._storage.notices(handle_path) + if next(notices, None) is None: + # There are no notices for this handle_path, it is valid to remove it + to_remove.append(handle_path) + for handle_path in to_remove: + self._storage.drop_snapshot(handle_path) + + +class StoredStateData(Object): + """Manager of the stored data.""" + + def __init__(self, parent, attr_name): + super().__init__(parent, attr_name) + self._cache = {} + self.dirty = False + + def __getitem__(self, key): + return self._cache.get(key) + + def __setitem__(self, key, value): + self._cache[key] = value + self.dirty = True + + def __contains__(self, key): + return key in self._cache + + def snapshot(self): + """Return the current state.""" + return self._cache + + def restore(self, snapshot): + """Restore current state to the given snapshot.""" + self._cache = snapshot + self.dirty = False + + def on_commit(self, event): + """Save changes to the storage backend.""" + if self.dirty: + self.framework.save_snapshot(self) + self.dirty = False + + +class BoundStoredState: + """Stored state data bound to a specific Object.""" + + def __init__(self, parent, attr_name): + parent.framework.register_type(StoredStateData, parent) + + handle = Handle(parent, StoredStateData.handle_kind, attr_name) + try: + data = parent.framework.load_snapshot(handle) + except NoSnapshotError: + data = StoredStateData(parent, attr_name) + + # __dict__ is used to avoid infinite recursion. + self.__dict__["_data"] = data + self.__dict__["_attr_name"] = attr_name + + parent.framework.observe(parent.framework.on.commit, self._data.on_commit) + + def __getattr__(self, key): + # "on" is the only reserved key that can't be used in the data map. + if key == "on": + return self._data.on + if key not in self._data: + raise AttributeError("attribute '{}' is not stored".format(key)) + return _wrap_stored(self._data, self._data[key]) + + def __setattr__(self, key, value): + if key == "on": + raise AttributeError("attribute 'on' is reserved and cannot be set") + + value = _unwrap_stored(self._data, value) + + if not isinstance(value, (type(None), int, float, str, bytes, list, dict, set)): + raise AttributeError( + 'attribute {!r} cannot be a {}: must be int/float/dict/list/etc'.format( + key, type(value).__name__)) + + self._data[key] = _unwrap_stored(self._data, value) + + def set_default(self, **kwargs): + """Set the value of any given key if it has not already been set.""" + for k, v in kwargs.items(): + if k not in self._data: + self._data[k] = v + + +class StoredState: + """A class used to store data the charm needs persisted across invocations. + + Example:: + + class MyClass(Object): + _stored = StoredState() + + Instances of `MyClass` can transparently save state between invocations by + setting attributes on `_stored`. Initial state should be set with + `set_default` on the bound object, that is:: + + class MyClass(Object): + _stored = StoredState() + + def __init__(self, parent, key): + super().__init__(parent, key) + self._stored.set_default(seen=set()) + self.framework.observe(self.on.seen, self._on_seen) + + def _on_seen(self, event): + self._stored.seen.add(event.uuid) + + """ + + def __init__(self): + self.parent_type = None + self.attr_name = None + + def __get__(self, parent, parent_type=None): + if self.parent_type is not None and self.parent_type not in parent_type.mro(): + # the StoredState instance is being shared between two unrelated classes + # -> unclear what is exepcted of us -> bail out + raise RuntimeError( + 'StoredState shared by {} and {}'.format( + self.parent_type.__name__, parent_type.__name__)) + + if parent is None: + # accessing via the class directly (e.g. MyClass.stored) + return self + + bound = None + if self.attr_name is not None: + bound = parent.__dict__.get(self.attr_name) + if bound is not None: + # we already have the thing from a previous pass, huzzah + return bound + + # need to find ourselves amongst the parent's bases + for cls in parent_type.mro(): + for attr_name, attr_value in cls.__dict__.items(): + if attr_value is not self: + continue + # we've found ourselves! is it the first time? + if bound is not None: + # the StoredState instance is being stored in two different + # attributes -> unclear what is expected of us -> bail out + raise RuntimeError("StoredState shared by {0}.{1} and {0}.{2}".format( + cls.__name__, self.attr_name, attr_name)) + # we've found ourselves for the first time; save where, and bind the object + self.attr_name = attr_name + self.parent_type = cls + bound = BoundStoredState(parent, attr_name) + + if bound is not None: + # cache the bound object to avoid the expensive lookup the next time + # (don't use setattr, to keep things symmetric with the fast-path lookup above) + parent.__dict__[self.attr_name] = bound + return bound + + raise AttributeError( + 'cannot find {} attribute in type {}'.format( + self.__class__.__name__, parent_type.__name__)) + + +def _wrap_stored(parent_data, value): + t = type(value) + if t is dict: + return StoredDict(parent_data, value) + if t is list: + return StoredList(parent_data, value) + if t is set: + return StoredSet(parent_data, value) + return value + + +def _unwrap_stored(parent_data, value): + t = type(value) + if t is StoredDict or t is StoredList or t is StoredSet: + return value._under + return value + + +def _wrapped_repr(obj): + t = type(obj) + if obj._under: + return "{}.{}({!r})".format(t.__module__, t.__name__, obj._under) + else: + return "{}.{}()".format(t.__module__, t.__name__) + + +class StoredDict(collections.abc.MutableMapping): + """A dict-like object that uses the StoredState as backend.""" + + def __init__(self, stored_data, under): + self._stored_data = stored_data + self._under = under + + def __getitem__(self, key): + return _wrap_stored(self._stored_data, self._under[key]) + + def __setitem__(self, key, value): + self._under[key] = _unwrap_stored(self._stored_data, value) + self._stored_data.dirty = True + + def __delitem__(self, key): + del self._under[key] + self._stored_data.dirty = True + + def __iter__(self): + return self._under.__iter__() + + def __len__(self): + return len(self._under) + + def __eq__(self, other): + if isinstance(other, StoredDict): + return self._under == other._under + elif isinstance(other, collections.abc.Mapping): + return self._under == other + else: + return NotImplemented + + __repr__ = _wrapped_repr + + +class StoredList(collections.abc.MutableSequence): + """A list-like object that uses the StoredState as backend.""" + + def __init__(self, stored_data, under): + self._stored_data = stored_data + self._under = under + + def __getitem__(self, index): + return _wrap_stored(self._stored_data, self._under[index]) + + def __setitem__(self, index, value): + self._under[index] = _unwrap_stored(self._stored_data, value) + self._stored_data.dirty = True + + def __delitem__(self, index): + del self._under[index] + self._stored_data.dirty = True + + def __len__(self): + return len(self._under) + + def insert(self, index, value): + """Insert value before index.""" + self._under.insert(index, value) + self._stored_data.dirty = True + + def append(self, value): + """Append value to the end of the list.""" + self._under.append(value) + self._stored_data.dirty = True + + def __eq__(self, other): + if isinstance(other, StoredList): + return self._under == other._under + elif isinstance(other, collections.abc.Sequence): + return self._under == other + else: + return NotImplemented + + def __lt__(self, other): + if isinstance(other, StoredList): + return self._under < other._under + elif isinstance(other, collections.abc.Sequence): + return self._under < other + else: + return NotImplemented + + def __le__(self, other): + if isinstance(other, StoredList): + return self._under <= other._under + elif isinstance(other, collections.abc.Sequence): + return self._under <= other + else: + return NotImplemented + + def __gt__(self, other): + if isinstance(other, StoredList): + return self._under > other._under + elif isinstance(other, collections.abc.Sequence): + return self._under > other + else: + return NotImplemented + + def __ge__(self, other): + if isinstance(other, StoredList): + return self._under >= other._under + elif isinstance(other, collections.abc.Sequence): + return self._under >= other + else: + return NotImplemented + + __repr__ = _wrapped_repr + + +class StoredSet(collections.abc.MutableSet): + """A set-like object that uses the StoredState as backend.""" + + def __init__(self, stored_data, under): + self._stored_data = stored_data + self._under = under + + def add(self, key): + """Add a key to a set. + + This has no effect if the key is already present. + """ + self._under.add(key) + self._stored_data.dirty = True + + def discard(self, key): + """Remove a key from a set if it is a member. + + If the key is not a member, do nothing. + """ + self._under.discard(key) + self._stored_data.dirty = True + + def __contains__(self, key): + return key in self._under + + def __iter__(self): + return self._under.__iter__() + + def __len__(self): + return len(self._under) + + @classmethod + def _from_iterable(cls, it): + """Construct an instance of the class from any iterable input. + + Per https://docs.python.org/3/library/collections.abc.html + if the Set mixin is being used in a class with a different constructor signature, + you will need to override _from_iterable() with a classmethod that can construct + new instances from an iterable argument. + """ + return set(it) + + def __le__(self, other): + if isinstance(other, StoredSet): + return self._under <= other._under + elif isinstance(other, collections.abc.Set): + return self._under <= other + else: + return NotImplemented + + def __ge__(self, other): + if isinstance(other, StoredSet): + return self._under >= other._under + elif isinstance(other, collections.abc.Set): + return self._under >= other + else: + return NotImplemented + + def __eq__(self, other): + if isinstance(other, StoredSet): + return self._under == other._under + elif isinstance(other, collections.abc.Set): + return self._under == other + else: + return NotImplemented + + __repr__ = _wrapped_repr diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/jujuversion.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/jujuversion.py new file mode 100644 index 00000000..61d420d3 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/jujuversion.py @@ -0,0 +1,114 @@ +# Copyright 2020 Canonical Ltd. +# +# 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 helper to work with the Juju version.""" + +import os +import re +from functools import total_ordering + + +@total_ordering +class JujuVersion: + """Helper to work with the Juju version. + + It knows how to parse the ``JUJU_VERSION`` environment variable, and exposes different + capabilities according to the specific version, allowing also to compare with other + versions. + """ + + PATTERN = r'''^ + (?P<major>\d{1,9})\.(?P<minor>\d{1,9}) # <major> and <minor> numbers are always there + ((?:\.|-(?P<tag>[a-z]+))(?P<patch>\d{1,9}))? # sometimes with .<patch> or -<tag><patch> + (\.(?P<build>\d{1,9}))?$ # and sometimes with a <build> number. + ''' + + def __init__(self, version): + m = re.match(self.PATTERN, version, re.VERBOSE) + if not m: + raise RuntimeError('"{}" is not a valid Juju version string'.format(version)) + + d = m.groupdict() + self.major = int(m.group('major')) + self.minor = int(m.group('minor')) + self.tag = d['tag'] or '' + self.patch = int(d['patch'] or 0) + self.build = int(d['build'] or 0) + + def __repr__(self): + if self.tag: + s = '{}.{}-{}{}'.format(self.major, self.minor, self.tag, self.patch) + else: + s = '{}.{}.{}'.format(self.major, self.minor, self.patch) + if self.build > 0: + s += '.{}'.format(self.build) + return s + + def __eq__(self, other): + if self is other: + return True + if isinstance(other, str): + other = type(self)(other) + elif not isinstance(other, JujuVersion): + raise RuntimeError('cannot compare Juju version "{}" with "{}"'.format(self, other)) + return ( + self.major == other.major + and self.minor == other.minor + and self.tag == other.tag + and self.build == other.build + and self.patch == other.patch) + + def __lt__(self, other): + if self is other: + return False + if isinstance(other, str): + other = type(self)(other) + elif not isinstance(other, JujuVersion): + raise RuntimeError('cannot compare Juju version "{}" with "{}"'.format(self, other)) + + if self.major != other.major: + return self.major < other.major + elif self.minor != other.minor: + return self.minor < other.minor + elif self.tag != other.tag: + if not self.tag: + return False + elif not other.tag: + return True + return self.tag < other.tag + elif self.patch != other.patch: + return self.patch < other.patch + elif self.build != other.build: + return self.build < other.build + return False + + @classmethod + def from_environ(cls) -> 'JujuVersion': + """Build a JujuVersion from JUJU_VERSION.""" + v = os.environ.get('JUJU_VERSION') + if v is None: + v = '0.0.0' + return cls(v) + + def has_app_data(self) -> bool: + """Determine whether this juju version knows about app data.""" + return (self.major, self.minor, self.patch) >= (2, 7, 0) + + def is_dispatch_aware(self) -> bool: + """Determine whether this juju version knows about dispatch.""" + return (self.major, self.minor, self.patch) >= (2, 8, 0) + + def has_controller_storage(self) -> bool: + """Determine whether this juju version supports controller-side storage.""" + return (self.major, self.minor, self.patch) >= (2, 8, 0) diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/lib/__init__.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/lib/__init__.py new file mode 100644 index 00000000..22b5a84e --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/lib/__init__.py @@ -0,0 +1,264 @@ +# Copyright 2020 Canonical Ltd. +# +# 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. + +"""Infrastructure for the opslib functionality.""" + +import logging +import os +import re +import sys + +from ast import literal_eval +from importlib.util import module_from_spec +from importlib.machinery import ModuleSpec +from pkgutil import get_importer +from types import ModuleType +from typing import List + +__all__ = ('use', 'autoimport') + +logger = logging.getLogger(__name__) + +_libraries = None + +_libline_re = re.compile(r'''^LIB([A-Z]+)\s*=\s*([0-9]+|['"][a-zA-Z0-9_.\-@]+['"])''') +_libname_re = re.compile(r'''^[a-z][a-z0-9]+$''') + +# Not perfect, but should do for now. +_libauthor_re = re.compile(r'''^[A-Za-z0-9_+.-]+@[a-z0-9_-]+(?:\.[a-z0-9_-]+)*\.[a-z]{2,3}$''') + + +def use(name: str, api: int, author: str) -> ModuleType: + """Use a library from the ops libraries. + + Args: + name: the name of the library requested. + api: the API version of the library. + author: the author of the library. If not given, requests the + one in the standard library. + + Raises: + ImportError: if the library cannot be found. + TypeError: if the name, api, or author are the wrong type. + ValueError: if the name, api, or author are invalid. + """ + if not isinstance(name, str): + raise TypeError("invalid library name: {!r} (must be a str)".format(name)) + if not isinstance(author, str): + raise TypeError("invalid library author: {!r} (must be a str)".format(author)) + if not isinstance(api, int): + raise TypeError("invalid library API: {!r} (must be an int)".format(api)) + if api < 0: + raise ValueError('invalid library api: {} (must be ≥0)'.format(api)) + if not _libname_re.match(name): + raise ValueError("invalid library name: {!r} (chars and digits only)".format(name)) + if not _libauthor_re.match(author): + raise ValueError("invalid library author email: {!r}".format(author)) + + if _libraries is None: + autoimport() + + versions = _libraries.get((name, author), ()) + for lib in versions: + if lib.api == api: + return lib.import_module() + + others = ', '.join(str(lib.api) for lib in versions) + if others: + msg = 'cannot find "{}" from "{}" with API version {} (have {})'.format( + name, author, api, others) + else: + msg = 'cannot find library "{}" from "{}"'.format(name, author) + + raise ImportError(msg, name=name) + + +def autoimport(): + """Find all libs in the path and enable use of them. + + You only need to call this if you've installed a package or + otherwise changed sys.path in the current run, and need to see the + changes. Otherwise libraries are found on first call of `use`. + """ + global _libraries + _libraries = {} + for spec in _find_all_specs(sys.path): + lib = _parse_lib(spec) + if lib is None: + continue + + versions = _libraries.setdefault((lib.name, lib.author), []) + versions.append(lib) + versions.sort(reverse=True) + + +def _find_all_specs(path): + for sys_dir in path: + if sys_dir == "": + sys_dir = "." + try: + top_dirs = os.listdir(sys_dir) + except (FileNotFoundError, NotADirectoryError): + continue + except OSError as e: + logger.debug("Tried to look for ops.lib packages under '%s': %s", sys_dir, e) + continue + logger.debug("Looking for ops.lib packages under '%s'", sys_dir) + for top_dir in top_dirs: + opslib = os.path.join(sys_dir, top_dir, 'opslib') + try: + lib_dirs = os.listdir(opslib) + except (FileNotFoundError, NotADirectoryError): + continue + except OSError as e: + logger.debug(" Tried '%s': %s", opslib, e) # *lots* of things checked here + continue + else: + logger.debug(" Trying '%s'", opslib) + finder = get_importer(opslib) + if finder is None: + logger.debug(" Finder for '%s' is None", opslib) + continue + if not hasattr(finder, 'find_spec'): + logger.debug(" Finder for '%s' has no find_spec", opslib) + continue + for lib_dir in lib_dirs: + spec_name = "{}.opslib.{}".format(top_dir, lib_dir) + spec = finder.find_spec(spec_name) + if spec is None: + logger.debug(" No spec for %r", spec_name) + continue + if spec.loader is None: + # a namespace package; not supported + logger.debug(" No loader for %r (probably a namespace package)", spec_name) + continue + + logger.debug(" Found %r", spec_name) + yield spec + + +# only the first this many lines of a file are looked at for the LIB* constants +_MAX_LIB_LINES = 99 +# these keys, with these types, are needed to have an opslib +_NEEDED_KEYS = {'NAME': str, 'AUTHOR': str, 'API': int, 'PATCH': int} + + +def _join_and(keys: List[str]) -> str: + if len(keys) == 0: + return "" + if len(keys) == 1: + return keys[0] + return ", ".join(keys[:-1]) + ", and " + keys[-1] + + +class _Missing: + """Helper to get the difference between what was found and what was needed when logging.""" + + def __init__(self, found): + self._found = found + + def __str__(self): + exp = set(_NEEDED_KEYS) + got = set(self._found) + if len(got) == 0: + return "missing {}".format(_join_and(sorted(exp))) + return "got {}, but missing {}".format( + _join_and(sorted(got)), + _join_and(sorted(exp - got))) + + +def _parse_lib(spec): + if spec.origin is None: + # "can't happen" + logger.warning("No origin for %r (no idea why; please report)", spec.name) + return None + + logger.debug(" Parsing %r", spec.name) + + try: + with open(spec.origin, 'rt', encoding='utf-8') as f: + libinfo = {} + for n, line in enumerate(f): + if len(libinfo) == len(_NEEDED_KEYS): + break + if n > _MAX_LIB_LINES: + logger.debug( + " Missing opslib metadata after reading to line %d: %s", + _MAX_LIB_LINES, _Missing(libinfo)) + return None + m = _libline_re.match(line) + if m is None: + continue + key, value = m.groups() + if key in _NEEDED_KEYS: + value = literal_eval(value) + if not isinstance(value, _NEEDED_KEYS[key]): + logger.debug( + " Bad type for %s: expected %s, got %s", + key, _NEEDED_KEYS[key].__name__, type(value).__name__) + return None + libinfo[key] = value + else: + if len(libinfo) != len(_NEEDED_KEYS): + logger.debug( + " Missing opslib metadata after reading to end of file: %s", + _Missing(libinfo)) + return None + except Exception as e: + logger.debug(" Failed: %s", e) + return None + + lib = _Lib(spec, libinfo['NAME'], libinfo['AUTHOR'], libinfo['API'], libinfo['PATCH']) + logger.debug(" Success: found library %s", lib) + + return lib + + +class _Lib: + + def __init__(self, spec: ModuleSpec, name: str, author: str, api: int, patch: int): + self.spec = spec + self.name = name + self.author = author + self.api = api + self.patch = patch + + self._module = None + + def __repr__(self): + return "<_Lib {}>".format(self) + + def __str__(self): + return "{0.name} by {0.author}, API {0.api}, patch {0.patch}".format(self) + + def import_module(self) -> ModuleType: + if self._module is None: + module = module_from_spec(self.spec) + self.spec.loader.exec_module(module) + self._module = module + return self._module + + def __eq__(self, other): + if not isinstance(other, _Lib): + return NotImplemented + a = (self.name, self.author, self.api, self.patch) + b = (other.name, other.author, other.api, other.patch) + return a == b + + def __lt__(self, other): + if not isinstance(other, _Lib): + return NotImplemented + a = (self.name, self.author, self.api, self.patch) + b = (other.name, other.author, other.api, other.patch) + return a < b diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/log.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/log.py new file mode 100644 index 00000000..b47013dd --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/log.py @@ -0,0 +1,58 @@ +# Copyright 2020 Canonical Ltd. +# +# 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. + +"""Interface to emit messages to the Juju logging system.""" + +import sys +import logging + + +class JujuLogHandler(logging.Handler): + """A handler for sending logs to Juju via juju-log.""" + + def __init__(self, model_backend, level=logging.DEBUG): + super().__init__(level) + self.model_backend = model_backend + + def emit(self, record): + """Send the specified logging record to the Juju backend. + + This method is not used directly by the Operator Framework code, but by + :class:`logging.Handler` itself as part of the logging machinery. + """ + self.model_backend.juju_log(record.levelname, self.format(record)) + + +def setup_root_logging(model_backend, debug=False): + """Setup python logging to forward messages to juju-log. + + By default, logging is set to DEBUG level, and messages will be filtered by Juju. + Charmers can also set their own default log level with:: + + logging.getLogger().setLevel(logging.INFO) + + model_backend -- a ModelBackend to use for juju-log + debug -- if True, write logs to stderr as well as to juju-log. + """ + logger = logging.getLogger() + logger.setLevel(logging.DEBUG) + logger.addHandler(JujuLogHandler(model_backend)) + if debug: + handler = logging.StreamHandler() + formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s') + handler.setFormatter(formatter) + logger.addHandler(handler) + + sys.excepthook = lambda etype, value, tb: logger.error( + "Uncaught exception while in charm code:", exc_info=(etype, value, tb)) diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/main.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/main.py new file mode 100644 index 00000000..f18f88ae --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/main.py @@ -0,0 +1,406 @@ +# Copyright 2019-2020 Canonical Ltd. +# +# 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. + +"""Main entry point to the Operator Framework.""" + +import inspect +import logging +import os +import shutil +import subprocess +import sys +import typing +import warnings +from pathlib import Path + +import yaml + +import ops.charm +import ops.framework +import ops.model +import ops.storage + +from ops.log import setup_root_logging +from ops.jujuversion import JujuVersion + +CHARM_STATE_FILE = '.unit-state.db' + + +logger = logging.getLogger() + + +def _exe_path(path: Path) -> typing.Optional[Path]: + """Find and return the full path to the given binary. + + Here path is the absolute path to a binary, but might be missing an extension. + """ + p = shutil.which(path.name, mode=os.F_OK, path=str(path.parent)) + if p is None: + return None + return Path(p) + + +def _get_charm_dir(): + charm_dir = os.environ.get("JUJU_CHARM_DIR") + if charm_dir is None: + # Assume $JUJU_CHARM_DIR/lib/op/main.py structure. + charm_dir = Path('{}/../../..'.format(__file__)).resolve() + else: + charm_dir = Path(charm_dir).resolve() + return charm_dir + + +def _create_event_link(charm, bound_event, link_to): + """Create a symlink for a particular event. + + charm -- A charm object. + bound_event -- An event for which to create a symlink. + link_to -- What the event link should point to + """ + if issubclass(bound_event.event_type, ops.charm.HookEvent): + event_dir = charm.framework.charm_dir / 'hooks' + event_path = event_dir / bound_event.event_kind.replace('_', '-') + elif issubclass(bound_event.event_type, ops.charm.ActionEvent): + if not bound_event.event_kind.endswith("_action"): + raise RuntimeError( + 'action event name {} needs _action suffix'.format(bound_event.event_kind)) + event_dir = charm.framework.charm_dir / 'actions' + # The event_kind is suffixed with "_action" while the executable is not. + event_path = event_dir / bound_event.event_kind[:-len('_action')].replace('_', '-') + else: + raise RuntimeError( + 'cannot create a symlink: unsupported event type {}'.format(bound_event.event_type)) + + event_dir.mkdir(exist_ok=True) + if not event_path.exists(): + target_path = os.path.relpath(link_to, str(event_dir)) + + # Ignore the non-symlink files or directories + # assuming the charm author knows what they are doing. + logger.debug( + 'Creating a new relative symlink at %s pointing to %s', + event_path, target_path) + event_path.symlink_to(target_path) + + +def _setup_event_links(charm_dir, charm): + """Set up links for supported events that originate from Juju. + + Whether a charm can handle an event or not can be determined by + introspecting which events are defined on it. + + Hooks or actions are created as symlinks to the charm code file + which is determined by inspecting symlinks provided by the charm + author at hooks/install or hooks/start. + + charm_dir -- A root directory of the charm. + charm -- An instance of the Charm class. + + """ + # XXX: on windows this function does not accomplish what it wants to: + # it creates symlinks with no extension pointing to a .py + # and juju only knows how to handle .exe, .bat, .cmd, and .ps1 + # so it does its job, but does not accomplish anything as the + # hooks aren't 'callable'. + link_to = os.path.realpath(os.environ.get("JUJU_DISPATCH_PATH", sys.argv[0])) + for bound_event in charm.on.events().values(): + # Only events that originate from Juju need symlinks. + if issubclass(bound_event.event_type, (ops.charm.HookEvent, ops.charm.ActionEvent)): + _create_event_link(charm, bound_event, link_to) + + +def _emit_charm_event(charm, event_name): + """Emits a charm event based on a Juju event name. + + charm -- A charm instance to emit an event from. + event_name -- A Juju event name to emit on a charm. + """ + event_to_emit = None + try: + event_to_emit = getattr(charm.on, event_name) + except AttributeError: + logger.debug("Event %s not defined for %s.", event_name, charm) + + # If the event is not supported by the charm implementation, do + # not error out or try to emit it. This is to support rollbacks. + if event_to_emit is not None: + args, kwargs = _get_event_args(charm, event_to_emit) + logger.debug('Emitting Juju event %s.', event_name) + event_to_emit.emit(*args, **kwargs) + + +def _get_event_args(charm, bound_event): + event_type = bound_event.event_type + model = charm.framework.model + + if issubclass(event_type, ops.charm.RelationEvent): + relation_name = os.environ['JUJU_RELATION'] + relation_id = int(os.environ['JUJU_RELATION_ID'].split(':')[-1]) + relation = model.get_relation(relation_name, relation_id) + else: + relation = None + + remote_app_name = os.environ.get('JUJU_REMOTE_APP', '') + remote_unit_name = os.environ.get('JUJU_REMOTE_UNIT', '') + if remote_app_name or remote_unit_name: + if not remote_app_name: + if '/' not in remote_unit_name: + raise RuntimeError('invalid remote unit name: {}'.format(remote_unit_name)) + remote_app_name = remote_unit_name.split('/')[0] + args = [relation, model.get_app(remote_app_name)] + if remote_unit_name: + args.append(model.get_unit(remote_unit_name)) + return args, {} + elif relation: + return [relation], {} + return [], {} + + +class _Dispatcher: + """Encapsulate how to figure out what event Juju wants us to run. + + Also knows how to run “legacy†hooks when Juju called us via a top-level + ``dispatch`` binary. + + Args: + charm_dir: the toplevel directory of the charm + + Attributes: + event_name: the name of the event to run + is_dispatch_aware: are we running under a Juju that knows about the + dispatch binary, and is that binary present? + + """ + + def __init__(self, charm_dir: Path): + self._charm_dir = charm_dir + self._exec_path = Path(os.environ.get('JUJU_DISPATCH_PATH', sys.argv[0])) + + dispatch = charm_dir / 'dispatch' + if JujuVersion.from_environ().is_dispatch_aware() and _exe_path(dispatch) is not None: + self._init_dispatch() + else: + self._init_legacy() + + def ensure_event_links(self, charm): + """Make sure necessary symlinks are present on disk.""" + if self.is_dispatch_aware: + # links aren't needed + return + + # When a charm is force-upgraded and a unit is in an error state Juju + # does not run upgrade-charm and instead runs the failed hook followed + # by config-changed. Given the nature of force-upgrading the hook setup + # code is not triggered on config-changed. + # + # 'start' event is included as Juju does not fire the install event for + # K8s charms (see LP: #1854635). + if (self.event_name in ('install', 'start', 'upgrade_charm') + or self.event_name.endswith('_storage_attached')): + _setup_event_links(self._charm_dir, charm) + + def run_any_legacy_hook(self): + """Run any extant legacy hook. + + If there is both a dispatch file and a legacy hook for the + current event, run the wanted legacy hook. + """ + if not self.is_dispatch_aware: + # we *are* the legacy hook + return + + dispatch_path = _exe_path(self._charm_dir / self._dispatch_path) + if dispatch_path is None: + logger.debug("Legacy %s does not exist.", self._dispatch_path) + return + + # super strange that there isn't an is_executable + if not os.access(str(dispatch_path), os.X_OK): + logger.warning("Legacy %s exists but is not executable.", self._dispatch_path) + return + + if dispatch_path.resolve() == Path(sys.argv[0]).resolve(): + logger.debug("Legacy %s is just a link to ourselves.", self._dispatch_path) + return + + argv = sys.argv.copy() + argv[0] = str(dispatch_path) + logger.info("Running legacy %s.", self._dispatch_path) + try: + subprocess.run(argv, check=True) + except subprocess.CalledProcessError as e: + logger.warning("Legacy %s exited with status %d.", self._dispatch_path, e.returncode) + sys.exit(e.returncode) + except OSError as e: + logger.warning("Unable to run legacy %s: %s", self._dispatch_path, e) + sys.exit(1) + else: + logger.debug("Legacy %s exited with status 0.", self._dispatch_path) + + def _set_name_from_path(self, path: Path): + """Sets the name attribute to that which can be inferred from the given path.""" + name = path.name.replace('-', '_') + if path.parent.name == 'actions': + name = '{}_action'.format(name) + self.event_name = name + + def _init_legacy(self): + """Set up the 'legacy' dispatcher. + + The current Juju doesn't know about 'dispatch' and calls hooks + explicitly. + """ + self.is_dispatch_aware = False + self._set_name_from_path(self._exec_path) + + def _init_dispatch(self): + """Set up the new 'dispatch' dispatcher. + + The current Juju will run 'dispatch' if it exists, and otherwise fall + back to the old behaviour. + + JUJU_DISPATCH_PATH will be set to the wanted hook, e.g. hooks/install, + in both cases. + """ + self._dispatch_path = Path(os.environ['JUJU_DISPATCH_PATH']) + + if 'OPERATOR_DISPATCH' in os.environ: + logger.debug("Charm called itself via %s.", self._dispatch_path) + sys.exit(0) + os.environ['OPERATOR_DISPATCH'] = '1' + + self.is_dispatch_aware = True + self._set_name_from_path(self._dispatch_path) + + def is_restricted_context(self): + """Return True if we are running in a restricted Juju context. + + When in a restricted context, most commands (relation-get, config-get, + state-get) are not available. As such, we change how we interact with + Juju. + """ + return self.event_name in ('collect_metrics',) + + +def _should_use_controller_storage(db_path: Path, meta: ops.charm.CharmMeta) -> bool: + """Figure out whether we want to use controller storage or not.""" + # if you've previously used local state, carry on using that + if db_path.exists(): + logger.debug("Using local storage: %s already exists", db_path) + return False + + # if you're not in k8s you don't need controller storage + if 'kubernetes' not in meta.series: + logger.debug("Using local storage: not a kubernetes charm") + return False + + # are we in a new enough Juju? + cur_version = JujuVersion.from_environ() + + if cur_version.has_controller_storage(): + logger.debug("Using controller storage: JUJU_VERSION=%s", cur_version) + return True + else: + logger.debug("Using local storage: JUJU_VERSION=%s", cur_version) + return False + + +def main(charm_class: ops.charm.CharmBase, use_juju_for_storage: bool = None): + """Setup the charm and dispatch the observed event. + + The event name is based on the way this executable was called (argv[0]). + + Args: + charm_class: your charm class. + use_juju_for_storage: whether to use controller-side storage. If not specified + then kubernetes charms that haven't previously used local storage and that + are running on a new enough Juju default to controller-side storage, + otherwise local storage is used. + """ + charm_dir = _get_charm_dir() + + model_backend = ops.model._ModelBackend() + debug = ('JUJU_DEBUG' in os.environ) + setup_root_logging(model_backend, debug=debug) + logger.debug("Operator Framework %s up and running.", ops.__version__) + + dispatcher = _Dispatcher(charm_dir) + dispatcher.run_any_legacy_hook() + + metadata = (charm_dir / 'metadata.yaml').read_text() + actions_meta = charm_dir / 'actions.yaml' + if actions_meta.exists(): + actions_metadata = actions_meta.read_text() + else: + actions_metadata = None + + if not yaml.__with_libyaml__: + logger.debug('yaml does not have libyaml extensions, using slower pure Python yaml loader') + meta = ops.charm.CharmMeta.from_yaml(metadata, actions_metadata) + model = ops.model.Model(meta, model_backend) + + charm_state_path = charm_dir / CHARM_STATE_FILE + + if use_juju_for_storage and not ops.storage.juju_backend_available(): + # raise an exception; the charm is broken and needs fixing. + msg = 'charm set use_juju_for_storage=True, but Juju version {} does not support it' + raise RuntimeError(msg.format(JujuVersion.from_environ())) + + if use_juju_for_storage is None: + use_juju_for_storage = _should_use_controller_storage(charm_state_path, meta) + + if use_juju_for_storage: + if dispatcher.is_restricted_context(): + # TODO: jam 2020-06-30 This unconditionally avoids running a collect metrics event + # Though we eventually expect that juju will run collect-metrics in a + # non-restricted context. Once we can determine that we are running collect-metrics + # in a non-restricted context, we should fire the event as normal. + logger.debug('"%s" is not supported when using Juju for storage\n' + 'see: https://github.com/canonical/operator/issues/348', + dispatcher.event_name) + # Note that we don't exit nonzero, because that would cause Juju to rerun the hook + return + store = ops.storage.JujuStorage() + else: + store = ops.storage.SQLiteStorage(charm_state_path) + framework = ops.framework.Framework(store, charm_dir, meta, model) + framework.set_breakpointhook() + try: + sig = inspect.signature(charm_class) + try: + sig.bind(framework) + except TypeError: + msg = ( + "the second argument, 'key', has been deprecated and will be " + "removed after the 0.7 release") + warnings.warn(msg, DeprecationWarning) + charm = charm_class(framework, None) + else: + charm = charm_class(framework) + dispatcher.ensure_event_links(charm) + + # TODO: Remove the collect_metrics check below as soon as the relevant + # Juju changes are made. Also adjust the docstring on + # EventBase.defer(). + # + # Skip reemission of deferred events for collect-metrics events because + # they do not have the full access to all hook tools. + if not dispatcher.is_restricted_context(): + framework.reemit() + + _emit_charm_event(charm, dispatcher.event_name) + + framework.commit() + finally: + framework.close() diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/model.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/model.py new file mode 100644 index 00000000..d446d636 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/model.py @@ -0,0 +1,1314 @@ +# Copyright 2019 Canonical Ltd. +# +# 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. + +"""Representations of Juju's model, application, unit, and other entities.""" + +import datetime +import decimal +import ipaddress +import json +import os +import re +import shutil +import tempfile +import time +import typing +import weakref + +from abc import ABC, abstractmethod +from collections.abc import Mapping, MutableMapping +from pathlib import Path +from subprocess import run, PIPE, CalledProcessError +import yaml + +import ops +from ops.jujuversion import JujuVersion + + +if yaml.__with_libyaml__: + _DefaultDumper = yaml.CSafeDumper +else: + _DefaultDumper = yaml.SafeDumper + + +class Model: + """Represents the Juju Model as seen from this unit. + + This should not be instantiated directly by Charmers, but can be accessed as `self.model` + from any class that derives from Object. + """ + + def __init__(self, meta: 'ops.charm.CharmMeta', backend: '_ModelBackend'): + self._cache = _ModelCache(backend) + self._backend = backend + self._unit = self.get_unit(self._backend.unit_name) + self._relations = RelationMapping(meta.relations, self.unit, self._backend, self._cache) + self._config = ConfigData(self._backend) + self._resources = Resources(list(meta.resources), self._backend) + self._pod = Pod(self._backend) + self._storages = StorageMapping(list(meta.storages), self._backend) + self._bindings = BindingMapping(self._backend) + + @property + def unit(self) -> 'Unit': + """A :class:`Unit` that represents the unit that is running this code (eg yourself).""" + return self._unit + + @property + def app(self): + """A :class:`Application` that represents the application this unit is a part of.""" + return self._unit.app + + @property + def relations(self) -> 'RelationMapping': + """Mapping of endpoint to list of :class:`Relation`. + + Answers the question "what am I currently related to". + See also :meth:`.get_relation`. + """ + return self._relations + + @property + def config(self) -> 'ConfigData': + """Return a mapping of config for the current application.""" + return self._config + + @property + def resources(self) -> 'Resources': + """Access to resources for this charm. + + Use ``model.resources.fetch(resource_name)`` to get the path on disk + where the resource can be found. + """ + return self._resources + + @property + def storages(self) -> 'StorageMapping': + """Mapping of storage_name to :class:`Storage` as defined in metadata.yaml.""" + return self._storages + + @property + def pod(self) -> 'Pod': + """Use ``model.pod.set_spec`` to set the container specification for Kubernetes charms.""" + return self._pod + + @property + def name(self) -> str: + """Return the name of the Model that this unit is running in. + + This is read from the environment variable ``JUJU_MODEL_NAME``. + """ + return self._backend.model_name + + def get_unit(self, unit_name: str) -> 'Unit': + """Get an arbitrary unit by name. + + Internally this uses a cache, so asking for the same unit two times will + return the same object. + """ + return self._cache.get(Unit, unit_name) + + def get_app(self, app_name: str) -> 'Application': + """Get an application by name. + + Internally this uses a cache, so asking for the same application two times will + return the same object. + """ + return self._cache.get(Application, app_name) + + def get_relation( + self, relation_name: str, + relation_id: typing.Optional[int] = None) -> 'Relation': + """Get a specific Relation instance. + + If relation_id is not given, this will return the Relation instance if the + relation is established only once or None if it is not established. If this + same relation is established multiple times the error TooManyRelatedAppsError is raised. + + Args: + relation_name: The name of the endpoint for this charm + relation_id: An identifier for a specific relation. Used to disambiguate when a + given application has more than one relation on a given endpoint. + + Raises: + TooManyRelatedAppsError: is raised if there is more than one relation to the + supplied relation_name and no relation_id was supplied + """ + return self.relations._get_unique(relation_name, relation_id) + + def get_binding(self, binding_key: typing.Union[str, 'Relation']) -> 'Binding': + """Get a network space binding. + + Args: + binding_key: The relation name or instance to obtain bindings for. + + Returns: + If ``binding_key`` is a relation name, the method returns the default binding + for that relation. If a relation instance is provided, the method first looks + up a more specific binding for that specific relation ID, and if none is found + falls back to the default binding for the relation name. + """ + return self._bindings.get(binding_key) + + +class _ModelCache: + + def __init__(self, backend): + self._backend = backend + self._weakrefs = weakref.WeakValueDictionary() + + def get(self, entity_type, *args): + key = (entity_type,) + args + entity = self._weakrefs.get(key) + if entity is None: + entity = entity_type(*args, backend=self._backend, cache=self) + self._weakrefs[key] = entity + return entity + + +class Application: + """Represents a named application in the model. + + This might be your application, or might be an application that you are related to. + Charmers should not instantiate Application objects directly, but should use + :meth:`Model.get_app` if they need a reference to a given application. + + Attributes: + name: The name of this application (eg, 'mysql'). This name may differ from the name of + the charm, if the user has deployed it to a different name. + """ + + def __init__(self, name, backend, cache): + self.name = name + self._backend = backend + self._cache = cache + self._is_our_app = self.name == self._backend.app_name + self._status = None + + def _invalidate(self): + self._status = None + + @property + def status(self) -> 'StatusBase': + """Used to report or read the status of the overall application. + + Can only be read and set by the lead unit of the application. + + The status of remote units is always Unknown. + + Raises: + RuntimeError: if you try to set the status of another application, or if you try to + set the status of this application as a unit that is not the leader. + InvalidStatusError: if you try to set the status to something that is not a + :class:`StatusBase` + + Example:: + + self.model.app.status = BlockedStatus('I need a human to come help me') + """ + if not self._is_our_app: + return UnknownStatus() + + if not self._backend.is_leader(): + raise RuntimeError('cannot get application status as a non-leader unit') + + if self._status: + return self._status + + s = self._backend.status_get(is_app=True) + self._status = StatusBase.from_name(s['status'], s['message']) + return self._status + + @status.setter + def status(self, value: 'StatusBase'): + if not isinstance(value, StatusBase): + raise InvalidStatusError( + 'invalid value provided for application {} status: {}'.format(self, value) + ) + + if not self._is_our_app: + raise RuntimeError('cannot to set status for a remote application {}'.format(self)) + + if not self._backend.is_leader(): + raise RuntimeError('cannot set application status as a non-leader unit') + + self._backend.status_set(value.name, value.message, is_app=True) + self._status = value + + def __repr__(self): + return '<{}.{} {}>'.format(type(self).__module__, type(self).__name__, self.name) + + +class Unit: + """Represents a named unit in the model. + + This might be your unit, another unit of your application, or a unit of another application + that you are related to. + + Attributes: + name: The name of the unit (eg, 'mysql/0') + app: The Application the unit is a part of. + """ + + def __init__(self, name, backend, cache): + self.name = name + + app_name = name.split('/')[0] + self.app = cache.get(Application, app_name) + + self._backend = backend + self._cache = cache + self._is_our_unit = self.name == self._backend.unit_name + self._status = None + + def _invalidate(self): + self._status = None + + @property + def status(self) -> 'StatusBase': + """Used to report or read the status of a specific unit. + + The status of any unit other than yourself is always Unknown. + + Raises: + RuntimeError: if you try to set the status of a unit other than yourself. + InvalidStatusError: if you try to set the status to something other than + a :class:`StatusBase` + Example:: + + self.model.unit.status = MaintenanceStatus('reconfiguring the frobnicators') + """ + if not self._is_our_unit: + return UnknownStatus() + + if self._status: + return self._status + + s = self._backend.status_get(is_app=False) + self._status = StatusBase.from_name(s['status'], s['message']) + return self._status + + @status.setter + def status(self, value: 'StatusBase'): + if not isinstance(value, StatusBase): + raise InvalidStatusError( + 'invalid value provided for unit {} status: {}'.format(self, value) + ) + + if not self._is_our_unit: + raise RuntimeError('cannot set status for a remote unit {}'.format(self)) + + self._backend.status_set(value.name, value.message, is_app=False) + self._status = value + + def __repr__(self): + return '<{}.{} {}>'.format(type(self).__module__, type(self).__name__, self.name) + + def is_leader(self) -> bool: + """Return whether this unit is the leader of its application. + + This can only be called for your own unit. + + Returns: + True if you are the leader, False otherwise + Raises: + RuntimeError: if called for a unit that is not yourself + """ + if self._is_our_unit: + # This value is not cached as it is not guaranteed to persist for the whole duration + # of a hook execution. + return self._backend.is_leader() + else: + raise RuntimeError( + 'leadership status of remote units ({}) is not visible to other' + ' applications'.format(self) + ) + + def set_workload_version(self, version: str) -> None: + """Record the version of the software running as the workload. + + This shouldn't be confused with the revision of the charm. This is informative only; + shown in the output of 'juju status'. + """ + if not isinstance(version, str): + raise TypeError("workload version must be a str, not {}: {!r}".format( + type(version).__name__, version)) + self._backend.application_version_set(version) + + +class LazyMapping(Mapping, ABC): + """Represents a dict that isn't populated until it is accessed. + + Charm authors should generally never need to use this directly, but it forms + the basis for many of the dicts that the framework tracks. + """ + + _lazy_data = None + + @abstractmethod + def _load(self): + raise NotImplementedError() + + @property + def _data(self): + data = self._lazy_data + if data is None: + data = self._lazy_data = self._load() + return data + + def _invalidate(self): + self._lazy_data = None + + def __contains__(self, key): + return key in self._data + + def __len__(self): + return len(self._data) + + def __iter__(self): + return iter(self._data) + + def __getitem__(self, key): + return self._data[key] + + def __repr__(self): + return repr(self._data) + + +class RelationMapping(Mapping): + """Map of relation names to lists of :class:`Relation` instances.""" + + def __init__(self, relations_meta, our_unit, backend, cache): + self._peers = set() + for name, relation_meta in relations_meta.items(): + if relation_meta.role.is_peer(): + self._peers.add(name) + self._our_unit = our_unit + self._backend = backend + self._cache = cache + self._data = {relation_name: None for relation_name in relations_meta} + + def __contains__(self, key): + return key in self._data + + def __len__(self): + return len(self._data) + + def __iter__(self): + return iter(self._data) + + def __getitem__(self, relation_name): + is_peer = relation_name in self._peers + relation_list = self._data[relation_name] + if relation_list is None: + relation_list = self._data[relation_name] = [] + for rid in self._backend.relation_ids(relation_name): + relation = Relation(relation_name, rid, is_peer, + self._our_unit, self._backend, self._cache) + relation_list.append(relation) + return relation_list + + def _invalidate(self, relation_name): + """Used to wipe the cache of a given relation_name. + + Not meant to be used by Charm authors. The content of relation data is + static for the lifetime of a hook, so it is safe to cache in memory once + accessed. + """ + self._data[relation_name] = None + + def _get_unique(self, relation_name, relation_id=None): + if relation_id is not None: + if not isinstance(relation_id, int): + raise ModelError('relation id {} must be int or None not {}'.format( + relation_id, + type(relation_id).__name__)) + for relation in self[relation_name]: + if relation.id == relation_id: + return relation + else: + # The relation may be dead, but it is not forgotten. + is_peer = relation_name in self._peers + return Relation(relation_name, relation_id, is_peer, + self._our_unit, self._backend, self._cache) + num_related = len(self[relation_name]) + if num_related == 0: + return None + elif num_related == 1: + return self[relation_name][0] + else: + # TODO: We need something in the framework to catch and gracefully handle + # errors, ideally integrating the error catching with Juju's mechanisms. + raise TooManyRelatedAppsError(relation_name, num_related, 1) + + +class BindingMapping: + """Mapping of endpoints to network bindings. + + Charm authors should not instantiate this directly, but access it via + :meth:`Model.get_binding` + """ + + def __init__(self, backend): + self._backend = backend + self._data = {} + + def get(self, binding_key: typing.Union[str, 'Relation']) -> 'Binding': + """Get a specific Binding for an endpoint/relation. + + Not used directly by Charm authors. See :meth:`Model.get_binding` + """ + if isinstance(binding_key, Relation): + binding_name = binding_key.name + relation_id = binding_key.id + elif isinstance(binding_key, str): + binding_name = binding_key + relation_id = None + else: + raise ModelError('binding key must be str or relation instance, not {}' + ''.format(type(binding_key).__name__)) + binding = self._data.get(binding_key) + if binding is None: + binding = Binding(binding_name, relation_id, self._backend) + self._data[binding_key] = binding + return binding + + +class Binding: + """Binding to a network space. + + Attributes: + name: The name of the endpoint this binding represents (eg, 'db') + """ + + def __init__(self, name, relation_id, backend): + self.name = name + self._relation_id = relation_id + self._backend = backend + self._network = None + + @property + def network(self) -> 'Network': + """The network information for this binding.""" + if self._network is None: + try: + self._network = Network(self._backend.network_get(self.name, self._relation_id)) + except RelationNotFoundError: + if self._relation_id is None: + raise + # If a relation is dead, we can still get network info associated with an + # endpoint itself + self._network = Network(self._backend.network_get(self.name)) + return self._network + + +class Network: + """Network space details. + + Charm authors should not instantiate this directly, but should get access to the Network + definition from :meth:`Model.get_binding` and its ``network`` attribute. + + Attributes: + interfaces: A list of :class:`NetworkInterface` details. This includes the + information about how your application should be configured (eg, what + IP addresses should you bind to.) + Note that multiple addresses for a single interface are represented as multiple + interfaces. (eg, ``[NetworkInfo('ens1', '10.1.1.1/32'), + NetworkInfo('ens1', '10.1.2.1/32'])``) + ingress_addresses: A list of :class:`ipaddress.ip_address` objects representing the IP + addresses that other units should use to get in touch with you. + egress_subnets: A list of :class:`ipaddress.ip_network` representing the subnets that + other units will see you connecting from. Due to things like NAT it isn't always + possible to narrow it down to a single address, but when it is clear, the CIDRs + will be constrained to a single address. (eg, 10.0.0.1/32) + Args: + network_info: A dict of network information as returned by ``network-get``. + """ + + def __init__(self, network_info: dict): + self.interfaces = [] + # Treat multiple addresses on an interface as multiple logical + # interfaces with the same name. + for interface_info in network_info.get('bind-addresses', []): + interface_name = interface_info.get('interface-name') + for address_info in interface_info.get('addresses', []): + self.interfaces.append(NetworkInterface(interface_name, address_info)) + self.ingress_addresses = [] + for address in network_info.get('ingress-addresses', []): + self.ingress_addresses.append(ipaddress.ip_address(address)) + self.egress_subnets = [] + for subnet in network_info.get('egress-subnets', []): + self.egress_subnets.append(ipaddress.ip_network(subnet)) + + @property + def bind_address(self): + """A single address that your application should bind() to. + + For the common case where there is a single answer. This represents a single + address from :attr:`.interfaces` that can be used to configure where your + application should bind() and listen(). + """ + if self.interfaces: + return self.interfaces[0].address + else: + return None + + @property + def ingress_address(self): + """The address other applications should use to connect to your unit. + + Due to things like public/private addresses, NAT and tunneling, the address you bind() + to is not always the address other people can use to connect() to you. + This is just the first address from :attr:`.ingress_addresses`. + """ + if self.ingress_addresses: + return self.ingress_addresses[0] + else: + return None + + +class NetworkInterface: + """Represents a single network interface that the charm needs to know about. + + Charmers should not instantiate this type directly. Instead use :meth:`Model.get_binding` + to get the network information for a given endpoint. + + Attributes: + name: The name of the interface (eg. 'eth0', or 'ens1') + subnet: An :class:`ipaddress.ip_network` representation of the IP for the network + interface. This may be a single address (eg '10.0.1.2/32') + """ + + def __init__(self, name: str, address_info: dict): + self.name = name + # TODO: expose a hardware address here, see LP: #1864070. + address = address_info.get('value') + # The value field may be empty. + if address: + self.address = ipaddress.ip_address(address) + else: + self.address = None + cidr = address_info.get('cidr') + # The cidr field may be empty, see LP: #1864102. + if cidr: + self.subnet = ipaddress.ip_network(cidr) + elif address: + # If we have an address, convert it to a /32 or /128 IP network. + self.subnet = ipaddress.ip_network(address) + else: + self.subnet = None + # TODO: expose a hostname/canonical name for the address here, see LP: #1864086. + + +class Relation: + """Represents an established relation between this application and another application. + + This class should not be instantiated directly, instead use :meth:`Model.get_relation` + or :attr:`ops.charm.RelationEvent.relation`. + + Attributes: + name: The name of the local endpoint of the relation (eg 'db') + id: The identifier for a particular relation (integer) + app: An :class:`Application` representing the remote application of this relation. + For peer relations this will be the local application. + units: A set of :class:`Unit` for units that have started and joined this relation. + data: A :class:`RelationData` holding the data buckets for each entity + of a relation. Accessed via eg Relation.data[unit]['foo'] + """ + + def __init__( + self, relation_name: str, relation_id: int, is_peer: bool, our_unit: Unit, + backend: '_ModelBackend', cache: '_ModelCache'): + self.name = relation_name + self.id = relation_id + self.app = None + self.units = set() + + # For peer relations, both the remote and the local app are the same. + if is_peer: + self.app = our_unit.app + try: + for unit_name in backend.relation_list(self.id): + unit = cache.get(Unit, unit_name) + self.units.add(unit) + if self.app is None: + self.app = unit.app + except RelationNotFoundError: + # If the relation is dead, just treat it as if it has no remote units. + pass + self.data = RelationData(self, our_unit, backend) + + def __repr__(self): + return '<{}.{} {}:{}>'.format(type(self).__module__, + type(self).__name__, + self.name, + self.id) + + +class RelationData(Mapping): + """Represents the various data buckets of a given relation. + + Each unit and application involved in a relation has their own data bucket. + Eg: ``{entity: RelationDataContent}`` + where entity can be either a :class:`Unit` or a :class:`Application`. + + Units can read and write their own data, and if they are the leader, + they can read and write their application data. They are allowed to read + remote unit and application data. + + This class should not be created directly. It should be accessed via + :attr:`Relation.data` + """ + + def __init__(self, relation: Relation, our_unit: Unit, backend: '_ModelBackend'): + self.relation = weakref.proxy(relation) + self._data = { + our_unit: RelationDataContent(self.relation, our_unit, backend), + our_unit.app: RelationDataContent(self.relation, our_unit.app, backend), + } + self._data.update({ + unit: RelationDataContent(self.relation, unit, backend) + for unit in self.relation.units}) + # The relation might be dead so avoid a None key here. + if self.relation.app is not None: + self._data.update({ + self.relation.app: RelationDataContent(self.relation, self.relation.app, backend), + }) + + def __contains__(self, key): + return key in self._data + + def __len__(self): + return len(self._data) + + def __iter__(self): + return iter(self._data) + + def __getitem__(self, key): + return self._data[key] + + def __repr__(self): + return repr(self._data) + + +# We mix in MutableMapping here to get some convenience implementations, but whether it's actually +# mutable or not is controlled by the flag. +class RelationDataContent(LazyMapping, MutableMapping): + """Data content of a unit or application in a relation.""" + + def __init__(self, relation, entity, backend): + self.relation = relation + self._entity = entity + self._backend = backend + self._is_app = isinstance(entity, Application) + + def _load(self): + """Load the data from the current entity / relation.""" + try: + return self._backend.relation_get(self.relation.id, self._entity.name, self._is_app) + except RelationNotFoundError: + # Dead relations tell no tales (and have no data). + return {} + + def _is_mutable(self): + """Return if the data content can be modified.""" + if self._is_app: + is_our_app = self._backend.app_name == self._entity.name + if not is_our_app: + return False + # Whether the application data bag is mutable or not depends on + # whether this unit is a leader or not, but this is not guaranteed + # to be always true during the same hook execution. + return self._backend.is_leader() + else: + is_our_unit = self._backend.unit_name == self._entity.name + if is_our_unit: + return True + return False + + def __setitem__(self, key, value): + if not self._is_mutable(): + raise RelationDataError('cannot set relation data for {}'.format(self._entity.name)) + if not isinstance(value, str): + raise RelationDataError('relation data values must be strings') + + self._backend.relation_set(self.relation.id, key, value, self._is_app) + + # Don't load data unnecessarily if we're only updating. + if self._lazy_data is not None: + if value == '': + # Match the behavior of Juju, which is that setting the value to an + # empty string will remove the key entirely from the relation data. + self._data.pop(key, None) + else: + self._data[key] = value + + def __delitem__(self, key): + # Match the behavior of Juju, which is that setting the value to an empty + # string will remove the key entirely from the relation data. + self.__setitem__(key, '') + + +class ConfigData(LazyMapping): + """Configuration data. + + This class should not be created directly. It should be accessed via :attr:`Model.config`. + """ + + def __init__(self, backend): + self._backend = backend + + def _load(self): + return self._backend.config_get() + + +class StatusBase: + """Status values specific to applications and units. + + To access a status by name, see :meth:`StatusBase.from_name`, most use cases will just + directly use the child class to indicate their status. + """ + + _statuses = {} + name = None + + def __init__(self, message: str): + self.message = message + + def __new__(cls, *args, **kwargs): + """Forbid the usage of StatusBase directly.""" + if cls is StatusBase: + raise TypeError("cannot instantiate a base class") + return super().__new__(cls) + + def __eq__(self, other): + if not isinstance(self, type(other)): + return False + return self.message == other.message + + def __repr__(self): + return "{.__class__.__name__}({!r})".format(self, self.message) + + @classmethod + def from_name(cls, name: str, message: str): + """Get the specific Status for the name (or UnknownStatus if not registered).""" + if name == 'unknown': + # unknown is special + return UnknownStatus() + else: + return cls._statuses[name](message) + + @classmethod + def register(cls, child): + """Register a Status for the child's name.""" + if child.name is None: + raise AttributeError('cannot register a Status which has no name') + cls._statuses[child.name] = child + return child + + +@StatusBase.register +class UnknownStatus(StatusBase): + """The unit status is unknown. + + A unit-agent has finished calling install, config-changed and start, but the + charm has not called status-set yet. + + """ + name = 'unknown' + + def __init__(self): + # Unknown status cannot be set and does not have a message associated with it. + super().__init__('') + + def __repr__(self): + return "UnknownStatus()" + + +@StatusBase.register +class ActiveStatus(StatusBase): + """The unit is ready. + + The unit believes it is correctly offering all the services it has been asked to offer. + """ + name = 'active' + + def __init__(self, message: str = ''): + super().__init__(message) + + +@StatusBase.register +class BlockedStatus(StatusBase): + """The unit requires manual intervention. + + An operator has to manually intervene to unblock the unit and let it proceed. + """ + name = 'blocked' + + +@StatusBase.register +class MaintenanceStatus(StatusBase): + """The unit is performing maintenance tasks. + + The unit is not yet providing services, but is actively doing work in preparation + for providing those services. This is a "spinning" state, not an error state. It + reflects activity on the unit itself, not on peers or related units. + + """ + name = 'maintenance' + + +@StatusBase.register +class WaitingStatus(StatusBase): + """A unit is unable to progress. + + The unit is unable to progress to an active state because an application to which + it is related is not running. + + """ + name = 'waiting' + + +class Resources: + """Object representing resources for the charm.""" + + def __init__(self, names: typing.Iterable[str], backend: '_ModelBackend'): + self._backend = backend + self._paths = {name: None for name in names} + + def fetch(self, name: str) -> Path: + """Fetch the resource from the controller or store. + + If successfully fetched, this returns a Path object to where the resource is stored + on disk, otherwise it raises a ModelError. + """ + if name not in self._paths: + raise RuntimeError('invalid resource name: {}'.format(name)) + if self._paths[name] is None: + self._paths[name] = Path(self._backend.resource_get(name)) + return self._paths[name] + + +class Pod: + """Represents the definition of a pod spec in Kubernetes models. + + Currently only supports simple access to setting the Juju pod spec via :attr:`.set_spec`. + """ + + def __init__(self, backend: '_ModelBackend'): + self._backend = backend + + def set_spec(self, spec: typing.Mapping, k8s_resources: typing.Mapping = None): + """Set the specification for pods that Juju should start in kubernetes. + + See `juju help-tool pod-spec-set` for details of what should be passed. + + Args: + spec: The mapping defining the pod specification + k8s_resources: Additional kubernetes specific specification. + + Returns: + None + """ + if not self._backend.is_leader(): + raise ModelError('cannot set a pod spec as this unit is not a leader') + self._backend.pod_spec_set(spec, k8s_resources) + + +class StorageMapping(Mapping): + """Map of storage names to lists of Storage instances.""" + + def __init__(self, storage_names: typing.Iterable[str], backend: '_ModelBackend'): + self._backend = backend + self._storage_map = {storage_name: None for storage_name in storage_names} + + def __contains__(self, key: str): + return key in self._storage_map + + def __len__(self): + return len(self._storage_map) + + def __iter__(self): + return iter(self._storage_map) + + def __getitem__(self, storage_name: str) -> typing.List['Storage']: + storage_list = self._storage_map[storage_name] + if storage_list is None: + storage_list = self._storage_map[storage_name] = [] + for storage_id in self._backend.storage_list(storage_name): + storage_list.append(Storage(storage_name, storage_id, self._backend)) + return storage_list + + def request(self, storage_name: str, count: int = 1): + """Requests new storage instances of a given name. + + Uses storage-add tool to request additional storage. Juju will notify the unit + via <storage-name>-storage-attached events when it becomes available. + """ + if storage_name not in self._storage_map: + raise ModelError(('cannot add storage {!r}:' + ' it is not present in the charm metadata').format(storage_name)) + self._backend.storage_add(storage_name, count) + + +class Storage: + """Represents a storage as defined in metadata.yaml. + + Attributes: + name: Simple string name of the storage + id: The provider id for storage + """ + + def __init__(self, storage_name, storage_id, backend): + self.name = storage_name + self.id = storage_id + self._backend = backend + self._location = None + + @property + def location(self): + """Return the location of the storage.""" + if self._location is None: + raw = self._backend.storage_get('{}/{}'.format(self.name, self.id), "location") + self._location = Path(raw) + return self._location + + +class ModelError(Exception): + """Base class for exceptions raised when interacting with the Model.""" + pass + + +class TooManyRelatedAppsError(ModelError): + """Raised by :meth:`Model.get_relation` if there is more than one related application.""" + + def __init__(self, relation_name, num_related, max_supported): + super().__init__('Too many remote applications on {} ({} > {})'.format( + relation_name, num_related, max_supported)) + self.relation_name = relation_name + self.num_related = num_related + self.max_supported = max_supported + + +class RelationDataError(ModelError): + """Raised by ``Relation.data[entity][key] = 'foo'`` if the data is invalid. + + This is raised if you're either trying to set a value to something that isn't a string, + or if you are trying to set a value in a bucket that you don't have access to. (eg, + another application/unit or setting your application data but you aren't the leader.) + """ + + +class RelationNotFoundError(ModelError): + """Backend error when querying juju for a given relation and that relation doesn't exist.""" + + +class InvalidStatusError(ModelError): + """Raised if trying to set an Application or Unit status to something invalid.""" + + +class _ModelBackend: + """Represents the connection between the Model representation and talking to Juju. + + Charm authors should not directly interact with the ModelBackend, it is a private + implementation of Model. + """ + + LEASE_RENEWAL_PERIOD = datetime.timedelta(seconds=30) + + def __init__(self, unit_name=None, model_name=None): + if unit_name is None: + self.unit_name = os.environ['JUJU_UNIT_NAME'] + else: + self.unit_name = unit_name + if model_name is None: + model_name = os.environ.get('JUJU_MODEL_NAME') + self.model_name = model_name + self.app_name = self.unit_name.split('/')[0] + + self._is_leader = None + self._leader_check_time = None + + def _run(self, *args, return_output=False, use_json=False): + kwargs = dict(stdout=PIPE, stderr=PIPE, check=True) + args = (shutil.which(args[0]),) + args[1:] + if use_json: + args += ('--format=json',) + try: + result = run(args, **kwargs) + except CalledProcessError as e: + raise ModelError(e.stderr) + if return_output: + if result.stdout is None: + return '' + else: + text = result.stdout.decode('utf8') + if use_json: + return json.loads(text) + else: + return text + + def relation_ids(self, relation_name): + relation_ids = self._run('relation-ids', relation_name, return_output=True, use_json=True) + return [int(relation_id.split(':')[-1]) for relation_id in relation_ids] + + def relation_list(self, relation_id): + try: + return self._run('relation-list', '-r', str(relation_id), + return_output=True, use_json=True) + except ModelError as e: + if 'relation not found' in str(e): + raise RelationNotFoundError() from e + raise + + def relation_get(self, relation_id, member_name, is_app): + if not isinstance(is_app, bool): + raise TypeError('is_app parameter to relation_get must be a boolean') + + if is_app: + version = JujuVersion.from_environ() + if not version.has_app_data(): + raise RuntimeError( + 'getting application data is not supported on Juju version {}'.format(version)) + + args = ['relation-get', '-r', str(relation_id), '-', member_name] + if is_app: + args.append('--app') + + try: + return self._run(*args, return_output=True, use_json=True) + except ModelError as e: + if 'relation not found' in str(e): + raise RelationNotFoundError() from e + raise + + def relation_set(self, relation_id, key, value, is_app): + if not isinstance(is_app, bool): + raise TypeError('is_app parameter to relation_set must be a boolean') + + if is_app: + version = JujuVersion.from_environ() + if not version.has_app_data(): + raise RuntimeError( + 'setting application data is not supported on Juju version {}'.format(version)) + + args = ['relation-set', '-r', str(relation_id), '{}={}'.format(key, value)] + if is_app: + args.append('--app') + + try: + return self._run(*args) + except ModelError as e: + if 'relation not found' in str(e): + raise RelationNotFoundError() from e + raise + + def config_get(self): + return self._run('config-get', return_output=True, use_json=True) + + def is_leader(self): + """Obtain the current leadership status for the unit the charm code is executing on. + + The value is cached for the duration of a lease which is 30s in Juju. + """ + now = time.monotonic() + if self._leader_check_time is None: + check = True + else: + time_since_check = datetime.timedelta(seconds=now - self._leader_check_time) + check = (time_since_check > self.LEASE_RENEWAL_PERIOD or self._is_leader is None) + if check: + # Current time MUST be saved before running is-leader to ensure the cache + # is only used inside the window that is-leader itself asserts. + self._leader_check_time = now + self._is_leader = self._run('is-leader', return_output=True, use_json=True) + + return self._is_leader + + def resource_get(self, resource_name): + return self._run('resource-get', resource_name, return_output=True).strip() + + def pod_spec_set(self, spec, k8s_resources): + tmpdir = Path(tempfile.mkdtemp('-pod-spec-set')) + try: + spec_path = tmpdir / 'spec.yaml' + with spec_path.open("wt", encoding="utf8") as f: + yaml.dump(spec, stream=f, Dumper=_DefaultDumper) + args = ['--file', str(spec_path)] + if k8s_resources: + k8s_res_path = tmpdir / 'k8s-resources.yaml' + with k8s_res_path.open("wt", encoding="utf8") as f: + yaml.dump(k8s_resources, stream=f, Dumper=_DefaultDumper) + args.extend(['--k8s-resources', str(k8s_res_path)]) + self._run('pod-spec-set', *args) + finally: + shutil.rmtree(str(tmpdir)) + + def status_get(self, *, is_app=False): + """Get a status of a unit or an application. + + Args: + is_app: A boolean indicating whether the status should be retrieved for a unit + or an application. + """ + content = self._run( + 'status-get', '--include-data', '--application={}'.format(is_app), + use_json=True, + return_output=True) + # Unit status looks like (in YAML): + # message: 'load: 0.28 0.26 0.26' + # status: active + # status-data: {} + # Application status looks like (in YAML): + # application-status: + # message: 'load: 0.28 0.26 0.26' + # status: active + # status-data: {} + # units: + # uo/0: + # message: 'load: 0.28 0.26 0.26' + # status: active + # status-data: {} + + if is_app: + return {'status': content['application-status']['status'], + 'message': content['application-status']['message']} + else: + return content + + def status_set(self, status, message='', *, is_app=False): + """Set a status of a unit or an application. + + Args: + status: The status to set. + message: The message to set in the status. + is_app: A boolean indicating whether the status should be set for a unit or an + application. + """ + if not isinstance(is_app, bool): + raise TypeError('is_app parameter must be boolean') + return self._run('status-set', '--application={}'.format(is_app), status, message) + + def storage_list(self, name): + return [int(s.split('/')[1]) for s in self._run('storage-list', name, + return_output=True, use_json=True)] + + def storage_get(self, storage_name_id, attribute): + return self._run('storage-get', '-s', storage_name_id, attribute, + return_output=True, use_json=True) + + def storage_add(self, name, count=1): + if not isinstance(count, int) or isinstance(count, bool): + raise TypeError('storage count must be integer, got: {} ({})'.format(count, + type(count))) + self._run('storage-add', '{}={}'.format(name, count)) + + def action_get(self): + return self._run('action-get', return_output=True, use_json=True) + + def action_set(self, results): + self._run('action-set', *["{}={}".format(k, v) for k, v in results.items()]) + + def action_log(self, message): + self._run('action-log', message) + + def action_fail(self, message=''): + self._run('action-fail', message) + + def application_version_set(self, version): + self._run('application-version-set', '--', version) + + def juju_log(self, level, message): + self._run('juju-log', '--log-level', level, "--", message) + + def network_get(self, binding_name, relation_id=None): + """Return network info provided by network-get for a given binding. + + Args: + binding_name: A name of a binding (relation name or extra-binding name). + relation_id: An optional relation id to get network info for. + """ + cmd = ['network-get', binding_name] + if relation_id is not None: + cmd.extend(['-r', str(relation_id)]) + try: + return self._run(*cmd, return_output=True, use_json=True) + except ModelError as e: + if 'relation not found' in str(e): + raise RelationNotFoundError() from e + raise + + def add_metrics(self, metrics, labels=None): + cmd = ['add-metric'] + + if labels: + label_args = [] + for k, v in labels.items(): + _ModelBackendValidator.validate_metric_label(k) + _ModelBackendValidator.validate_label_value(k, v) + label_args.append('{}={}'.format(k, v)) + cmd.extend(['--labels', ','.join(label_args)]) + + metric_args = [] + for k, v in metrics.items(): + _ModelBackendValidator.validate_metric_key(k) + metric_value = _ModelBackendValidator.format_metric_value(v) + metric_args.append('{}={}'.format(k, metric_value)) + cmd.extend(metric_args) + self._run(*cmd) + + +class _ModelBackendValidator: + """Provides facilities for validating inputs and formatting them for model backends.""" + + METRIC_KEY_REGEX = re.compile(r'^[a-zA-Z](?:[a-zA-Z0-9-_]*[a-zA-Z0-9])?$') + + @classmethod + def validate_metric_key(cls, key): + if cls.METRIC_KEY_REGEX.match(key) is None: + raise ModelError( + 'invalid metric key {!r}: must match {}'.format( + key, cls.METRIC_KEY_REGEX.pattern)) + + @classmethod + def validate_metric_label(cls, label_name): + if cls.METRIC_KEY_REGEX.match(label_name) is None: + raise ModelError( + 'invalid metric label name {!r}: must match {}'.format( + label_name, cls.METRIC_KEY_REGEX.pattern)) + + @classmethod + def format_metric_value(cls, value): + try: + decimal_value = decimal.Decimal.from_float(value) + except TypeError as e: + e2 = ModelError('invalid metric value {!r} provided:' + ' must be a positive finite float'.format(value)) + raise e2 from e + if decimal_value.is_nan() or decimal_value.is_infinite() or decimal_value < 0: + raise ModelError('invalid metric value {!r} provided:' + ' must be a positive finite float'.format(value)) + return str(decimal_value) + + @classmethod + def validate_label_value(cls, label, value): + # Label values cannot be empty, contain commas or equal signs as those are + # used by add-metric as separators. + if not value: + raise ModelError( + 'metric label {} has an empty value, which is not allowed'.format(label)) + v = str(value) + if re.search('[,=]', v) is not None: + raise ModelError( + 'metric label values must not contain "," or "=": {}={!r}'.format(label, value)) diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/storage.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/storage.py new file mode 100644 index 00000000..562cde77 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/storage.py @@ -0,0 +1,374 @@ +# Copyright 2019-2020 Canonical Ltd. +# +# 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. + +"""Structures to offer storage to the charm (through Juju or locally).""" + +from datetime import timedelta +import pickle +import shutil +import subprocess +import sqlite3 +import typing + +import yaml + + +def _run(args, **kw): + cmd = shutil.which(args[0]) + if cmd is None: + raise FileNotFoundError(args[0]) + return subprocess.run([cmd, *args[1:]], **kw) + + +class SQLiteStorage: + """Storage using SQLite backend.""" + + DB_LOCK_TIMEOUT = timedelta(hours=1) + + def __init__(self, filename): + # The isolation_level argument is set to None such that the implicit + # transaction management behavior of the sqlite3 module is disabled. + self._db = sqlite3.connect(str(filename), + isolation_level=None, + timeout=self.DB_LOCK_TIMEOUT.total_seconds()) + self._setup() + + def _setup(self): + """Make the database ready to be used as storage.""" + # Make sure that the database is locked until the connection is closed, + # not until the transaction ends. + self._db.execute("PRAGMA locking_mode=EXCLUSIVE") + c = self._db.execute("BEGIN") + c.execute("SELECT count(name) FROM sqlite_master WHERE type='table' AND name='snapshot'") + if c.fetchone()[0] == 0: + # Keep in mind what might happen if the process dies somewhere below. + # The system must not be rendered permanently broken by that. + self._db.execute("CREATE TABLE snapshot (handle TEXT PRIMARY KEY, data BLOB)") + self._db.execute(''' + CREATE TABLE notice ( + sequence INTEGER PRIMARY KEY AUTOINCREMENT, + event_path TEXT, + observer_path TEXT, + method_name TEXT) + ''') + self._db.commit() + + def close(self): + """Part of the Storage API, close the storage backend.""" + self._db.close() + + def commit(self): + """Part of the Storage API, commit latest changes in the storage backend.""" + self._db.commit() + + # There's commit but no rollback. For abort to be supported, we'll need logic that + # can rollback decisions made by third-party code in terms of the internal state + # of objects that have been snapshotted, and hooks to let them know about it and + # take the needed actions to undo their logic until the last snapshot. + # This is doable but will increase significantly the chances for mistakes. + + def save_snapshot(self, handle_path: str, snapshot_data: typing.Any) -> None: + """Part of the Storage API, persist a snapshot data under the given handle. + + Args: + handle_path: The string identifying the snapshot. + snapshot_data: The data to be persisted. (as returned by Object.snapshot()). This + might be a dict/tuple/int, but must only contain 'simple' python types. + """ + # Use pickle for serialization, so the value remains portable. + raw_data = pickle.dumps(snapshot_data) + self._db.execute("REPLACE INTO snapshot VALUES (?, ?)", (handle_path, raw_data)) + + def load_snapshot(self, handle_path: str) -> typing.Any: + """Part of the Storage API, retrieve a snapshot that was previously saved. + + Args: + handle_path: The string identifying the snapshot. + + Raises: + NoSnapshotError: if there is no snapshot for the given handle_path. + """ + c = self._db.cursor() + c.execute("SELECT data FROM snapshot WHERE handle=?", (handle_path,)) + row = c.fetchone() + if row: + return pickle.loads(row[0]) + raise NoSnapshotError(handle_path) + + def drop_snapshot(self, handle_path: str): + """Part of the Storage API, remove a snapshot that was previously saved. + + Dropping a snapshot that doesn't exist is treated as a no-op. + """ + self._db.execute("DELETE FROM snapshot WHERE handle=?", (handle_path,)) + + def list_snapshots(self) -> typing.Generator[str, None, None]: + """Return the name of all snapshots that are currently saved.""" + c = self._db.cursor() + c.execute("SELECT handle FROM snapshot") + while True: + rows = c.fetchmany() + if not rows: + break + for row in rows: + yield row[0] + + def save_notice(self, event_path: str, observer_path: str, method_name: str) -> None: + """Part of the Storage API, record an notice (event and observer).""" + self._db.execute('INSERT INTO notice VALUES (NULL, ?, ?, ?)', + (event_path, observer_path, method_name)) + + def drop_notice(self, event_path: str, observer_path: str, method_name: str) -> None: + """Part of the Storage API, remove a notice that was previously recorded.""" + self._db.execute(''' + DELETE FROM notice + WHERE event_path=? + AND observer_path=? + AND method_name=? + ''', (event_path, observer_path, method_name)) + + def notices(self, event_path: str = None) ->\ + typing.Generator[typing.Tuple[str, str, str], None, None]: + """Part of the Storage API, return all notices that begin with event_path. + + Args: + event_path: If supplied, will only yield events that match event_path. If not + supplied (or None/'') will return all events. + + Returns: + Iterable of (event_path, observer_path, method_name) tuples + """ + if event_path: + c = self._db.execute(''' + SELECT event_path, observer_path, method_name + FROM notice + WHERE event_path=? + ORDER BY sequence + ''', (event_path,)) + else: + c = self._db.execute(''' + SELECT event_path, observer_path, method_name + FROM notice + ORDER BY sequence + ''') + while True: + rows = c.fetchmany() + if not rows: + break + for row in rows: + yield tuple(row) + + +class JujuStorage: + """Storing the content tracked by the Framework in Juju. + + This uses :class:`_JujuStorageBackend` to interact with state-get/state-set + as the way to store state for the framework and for components. + """ + + NOTICE_KEY = "#notices#" + + def __init__(self, backend: '_JujuStorageBackend' = None): + self._backend = backend + if backend is None: + self._backend = _JujuStorageBackend() + + def close(self): + """Part of the Storage API, close the storage backend. + + Nothing to be done for Juju backend, as it's transactional. + """ + + def commit(self): + """Part of the Storage API, commit latest changes in the storage backend. + + Nothing to be done for Juju backend, as it's transactional. + """ + + def save_snapshot(self, handle_path: str, snapshot_data: typing.Any) -> None: + """Part of the Storage API, persist a snapshot data under the given handle. + + Args: + handle_path: The string identifying the snapshot. + snapshot_data: The data to be persisted. (as returned by Object.snapshot()). This + might be a dict/tuple/int, but must only contain 'simple' python types. + """ + self._backend.set(handle_path, snapshot_data) + + def load_snapshot(self, handle_path): + """Part of the Storage API, retrieve a snapshot that was previously saved. + + Args: + handle_path: The string identifying the snapshot. + + Raises: + NoSnapshotError: if there is no snapshot for the given handle_path. + """ + try: + content = self._backend.get(handle_path) + except KeyError: + raise NoSnapshotError(handle_path) + return content + + def drop_snapshot(self, handle_path): + """Part of the Storage API, remove a snapshot that was previously saved. + + Dropping a snapshot that doesn't exist is treated as a no-op. + """ + self._backend.delete(handle_path) + + def save_notice(self, event_path: str, observer_path: str, method_name: str): + """Part of the Storage API, record an notice (event and observer).""" + notice_list = self._load_notice_list() + notice_list.append([event_path, observer_path, method_name]) + self._save_notice_list(notice_list) + + def drop_notice(self, event_path: str, observer_path: str, method_name: str): + """Part of the Storage API, remove a notice that was previously recorded.""" + notice_list = self._load_notice_list() + notice_list.remove([event_path, observer_path, method_name]) + self._save_notice_list(notice_list) + + def notices(self, event_path: str = None): + """Part of the Storage API, return all notices that begin with event_path. + + Args: + event_path: If supplied, will only yield events that match event_path. If not + supplied (or None/'') will return all events. + + Returns: + Iterable of (event_path, observer_path, method_name) tuples + """ + notice_list = self._load_notice_list() + for row in notice_list: + if event_path and row[0] != event_path: + continue + yield tuple(row) + + def _load_notice_list(self) -> typing.List[typing.Tuple[str]]: + """Load a notice list from current key. + + Returns: + List of (event_path, observer_path, method_name) tuples; empty if no key or is None. + """ + try: + notice_list = self._backend.get(self.NOTICE_KEY) + except KeyError: + return [] + if notice_list is None: + return [] + return notice_list + + def _save_notice_list(self, notices: typing.List[typing.Tuple[str]]) -> None: + """Save a notice list under current key. + + Args: + notices: List of (event_path, observer_path, method_name) tuples. + """ + self._backend.set(self.NOTICE_KEY, notices) + + +class _SimpleLoader(getattr(yaml, 'CSafeLoader', yaml.SafeLoader)): + """Handle a couple basic python types. + + yaml.SafeLoader can handle all the basic int/float/dict/set/etc that we want. The only one + that it *doesn't* handle is tuples. We don't want to support arbitrary types, so we just + subclass SafeLoader and add tuples back in. + """ + # Taken from the example at: + # https://stackoverflow.com/questions/9169025/how-can-i-add-a-python-tuple-to-a-yaml-file-using-pyyaml + + construct_python_tuple = yaml.Loader.construct_python_tuple + + +_SimpleLoader.add_constructor( + u'tag:yaml.org,2002:python/tuple', + _SimpleLoader.construct_python_tuple) + + +class _SimpleDumper(getattr(yaml, 'CSafeDumper', yaml.SafeDumper)): + """Add types supported by 'marshal'. + + YAML can support arbitrary types, but that is generally considered unsafe (like pickle). So + we want to only support dumping out types that are safe to load. + """ + + +_SimpleDumper.represent_tuple = yaml.Dumper.represent_tuple +_SimpleDumper.add_representer(tuple, _SimpleDumper.represent_tuple) + + +def juju_backend_available() -> bool: + """Check if Juju state storage is available.""" + p = shutil.which('state-get') + return p is not None + + +class _JujuStorageBackend: + """Implements the interface from the Operator framework to Juju's state-get/set/etc.""" + + def set(self, key: str, value: typing.Any) -> None: + """Set a key to a given value. + + Args: + key: The string key that will be used to find the value later + value: Arbitrary content that will be returned by get(). + + Raises: + CalledProcessError: if 'state-set' returns an error code. + """ + # default_flow_style=None means that it can use Block for + # complex types (types that have nested types) but use flow + # for simple types (like an array). Not all versions of PyYAML + # have the same default style. + encoded_value = yaml.dump(value, Dumper=_SimpleDumper, default_flow_style=None) + content = yaml.dump( + {key: encoded_value}, encoding='utf8', default_style='|', + default_flow_style=False, + Dumper=_SimpleDumper) + _run(["state-set", "--file", "-"], input=content, check=True) + + def get(self, key: str) -> typing.Any: + """Get the bytes value associated with a given key. + + Args: + key: The string key that will be used to find the value + Raises: + CalledProcessError: if 'state-get' returns an error code. + """ + # We don't capture stderr here so it can end up in debug logs. + p = _run(["state-get", key], stdout=subprocess.PIPE, check=True, universal_newlines=True) + if p.stdout == '' or p.stdout == '\n': + raise KeyError(key) + return yaml.load(p.stdout, Loader=_SimpleLoader) + + def delete(self, key: str) -> None: + """Remove a key from being tracked. + + Args: + key: The key to stop storing + Raises: + CalledProcessError: if 'state-delete' returns an error code. + """ + _run(["state-delete", key], check=True) + + +class NoSnapshotError(Exception): + """Exception to flag that there is no snapshot for the given handle_path.""" + + def __init__(self, handle_path): + self.handle_path = handle_path + + def __str__(self): + return 'no snapshot data found for {} object'.format(self.handle_path) diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/testing.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/testing.py new file mode 100644 index 00000000..e70bc98f --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/testing.py @@ -0,0 +1,826 @@ +# Copyright 2020 Canonical Ltd. +# +# 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. + +"""Infrastructure to build unittests for Charms using the Operator Framework.""" + +import inspect +import pathlib +import random +import tempfile +import typing +import yaml +from contextlib import contextmanager +from textwrap import dedent + +from ops import ( + charm, + framework, + model, + storage, +) + + +# OptionalYAML is something like metadata.yaml or actions.yaml. You can +# pass in a file-like object or the string directly. +OptionalYAML = typing.Optional[typing.Union[str, typing.TextIO]] + + +# noinspection PyProtectedMember +class Harness: + """This class represents a way to build up the model that will drive a test suite. + + The model that is created is from the viewpoint of the charm that you are testing. + + Example:: + + harness = Harness(MyCharm) + # Do initial setup here + relation_id = harness.add_relation('db', 'postgresql') + # Now instantiate the charm to see events as the model changes + harness.begin() + harness.add_relation_unit(relation_id, 'postgresql/0') + harness.update_relation_data(relation_id, 'postgresql/0', {'key': 'val'}) + # Check that charm has properly handled the relation_joined event for postgresql/0 + self.assertEqual(harness.charm. ...) + + Args: + charm_cls: The Charm class that you'll be testing. + meta: charm.CharmBase is a A string or file-like object containing the contents of + metadata.yaml. If not supplied, we will look for a 'metadata.yaml' file in the + parent directory of the Charm, and if not found fall back to a trivial + 'name: test-charm' metadata. + actions: A string or file-like object containing the contents of + actions.yaml. If not supplied, we will look for a 'actions.yaml' file in the + parent directory of the Charm. + config: A string or file-like object containing the contents of + config.yaml. If not supplied, we will look for a 'config.yaml' file in the + parent directory of the Charm. + """ + + def __init__( + self, + charm_cls: typing.Type[charm.CharmBase], + *, + meta: OptionalYAML = None, + actions: OptionalYAML = None, + config: OptionalYAML = None): + self._charm_cls = charm_cls + self._charm = None + self._charm_dir = 'no-disk-path' # this may be updated by _create_meta + self._meta = self._create_meta(meta, actions) + self._unit_name = self._meta.name + '/0' + self._framework = None + self._hooks_enabled = True + self._relation_id_counter = 0 + self._backend = _TestingModelBackend(self._unit_name, self._meta) + self._model = model.Model(self._meta, self._backend) + self._storage = storage.SQLiteStorage(':memory:') + self._oci_resources = {} + self._framework = framework.Framework( + self._storage, self._charm_dir, self._meta, self._model) + self._update_config(key_values=self._load_config_defaults(config)) + + @property + def charm(self) -> charm.CharmBase: + """Return the instance of the charm class that was passed to __init__. + + Note that the Charm is not instantiated until you have called + :meth:`.begin()`. + """ + return self._charm + + @property + def model(self) -> model.Model: + """Return the :class:`~ops.model.Model` that is being driven by this Harness.""" + return self._model + + @property + def framework(self) -> framework.Framework: + """Return the Framework that is being driven by this Harness.""" + return self._framework + + def begin(self) -> None: + """Instantiate the Charm and start handling events. + + Before calling :meth:`begin`, there is no Charm instance, so changes to the Model won't + emit events. You must call :meth:`.begin` before :attr:`.charm` is valid. + """ + if self._charm is not None: + raise RuntimeError('cannot call the begin method on the harness more than once') + + # The Framework adds attributes to class objects for events, etc. As such, we can't re-use + # the original class against multiple Frameworks. So create a locally defined class + # and register it. + # TODO: jam 2020-03-16 We are looking to changes this to Instance attributes instead of + # Class attributes which should clean up this ugliness. The API can stay the same + class TestEvents(self._charm_cls.on.__class__): + pass + + TestEvents.__name__ = self._charm_cls.on.__class__.__name__ + + class TestCharm(self._charm_cls): + on = TestEvents() + + # Note: jam 2020-03-01 This is so that errors in testing say MyCharm has no attribute foo, + # rather than TestCharm has no attribute foo. + TestCharm.__name__ = self._charm_cls.__name__ + self._charm = TestCharm(self._framework) + + def begin_with_initial_hooks(self) -> None: + """Called when you want the Harness to fire the same hooks that Juju would fire at startup. + + This triggers install, relation-created, config-changed, start, and any relation-joined + hooks. Based on what relations have been defined before you called begin(). + Note that all of these are fired before returning control to the test suite, so if you + want to introspect what happens at each step, you need to fire them directly + (eg Charm.on.install.emit()). + + To use this with all the normal hooks, you should instantiate the harness, setup any + relations that you want active when the charm starts, and then call this method. + + Example:: + + harness = Harness(MyCharm) + # Do initial setup here + relation_id = harness.add_relation('db', 'postgresql') + harness.add_relation_unit(relation_id, 'postgresql/0') + harness.update_relation_data(relation_id, 'postgresql/0', {'key': 'val'}) + harness.set_leader(True) + harness.update_config({'initial': 'config'}) + harness.begin_with_initial_hooks() + # This will cause + # install, db-relation-created('postgresql'), leader-elected, config-changed, start + # db-relation-joined('postrgesql/0'), db-relation-changed('postgresql/0') + # To be fired. + """ + self.begin() + # TODO: jam 2020-08-03 This should also handle storage-attached hooks once we have support + # for dealing with storage. + self._charm.on.install.emit() + # Juju itself iterates what relation to fire based on a map[int]relation, so it doesn't + # guarantee a stable ordering between relation events. It *does* give a stable ordering + # of joined units for a given relation. + items = list(self._meta.relations.items()) + random.shuffle(items) + this_app_name = self._meta.name + for relname, rel_meta in items: + if rel_meta.role == charm.RelationRole.peer: + # If the user has directly added a relation, leave it be, but otherwise ensure + # that peer relations are always established at before leader-elected. + rel_ids = self._backend._relation_ids_map.get(relname) + if rel_ids is None: + self.add_relation(relname, self._meta.name) + else: + random.shuffle(rel_ids) + for rel_id in rel_ids: + self._emit_relation_created(relname, rel_id, this_app_name) + else: + rel_ids = self._backend._relation_ids_map.get(relname, []) + random.shuffle(rel_ids) + for rel_id in rel_ids: + app_name = self._backend._relation_app_and_units[rel_id]["app"] + self._emit_relation_created(relname, rel_id, app_name) + if self._backend._is_leader: + self._charm.on.leader_elected.emit() + else: + self._charm.on.leader_settings_changed.emit() + self._charm.on.config_changed.emit() + self._charm.on.start.emit() + all_ids = list(self._backend._relation_names.items()) + random.shuffle(all_ids) + for rel_id, rel_name in all_ids: + rel_app_and_units = self._backend._relation_app_and_units[rel_id] + app_name = rel_app_and_units["app"] + # Note: Juju *does* fire relation events for a given relation in the sorted order of + # the unit names. It also always fires relation-changed immediately after + # relation-joined for the same unit. + # Juju only fires relation-changed (app) if there is data for the related application + relation = self._model.get_relation(rel_name, rel_id) + if self._backend._relation_data[rel_id].get(app_name): + app = self._model.get_app(app_name) + self._charm.on[rel_name].relation_changed.emit( + relation, app, None) + for unit_name in sorted(rel_app_and_units["units"]): + remote_unit = self._model.get_unit(unit_name) + self._charm.on[rel_name].relation_joined.emit( + relation, remote_unit.app, remote_unit) + self._charm.on[rel_name].relation_changed.emit( + relation, remote_unit.app, remote_unit) + + def cleanup(self) -> None: + """Called by your test infrastructure to cleanup any temporary directories/files/etc. + + Currently this only needs to be called if you test with resources. But it is reasonable + to always include a `testcase.addCleanup(harness.cleanup)` just in case. + """ + self._backend._cleanup() + + def _create_meta(self, charm_metadata, action_metadata): + """Create a CharmMeta object. + + Handle the cases where a user doesn't supply explicit metadata snippets. + """ + filename = inspect.getfile(self._charm_cls) + charm_dir = pathlib.Path(filename).parents[1] + + if charm_metadata is None: + metadata_path = charm_dir / 'metadata.yaml' + if metadata_path.is_file(): + charm_metadata = metadata_path.read_text() + self._charm_dir = charm_dir + else: + # The simplest of metadata that the framework can support + charm_metadata = 'name: test-charm' + elif isinstance(charm_metadata, str): + charm_metadata = dedent(charm_metadata) + + if action_metadata is None: + actions_path = charm_dir / 'actions.yaml' + if actions_path.is_file(): + action_metadata = actions_path.read_text() + self._charm_dir = charm_dir + elif isinstance(action_metadata, str): + action_metadata = dedent(action_metadata) + + return charm.CharmMeta.from_yaml(charm_metadata, action_metadata) + + def _load_config_defaults(self, charm_config): + """Load default values from config.yaml. + + Handle the case where a user doesn't supply explicit config snippets. + """ + filename = inspect.getfile(self._charm_cls) + charm_dir = pathlib.Path(filename).parents[1] + + if charm_config is None: + config_path = charm_dir / 'config.yaml' + if config_path.is_file(): + charm_config = config_path.read_text() + self._charm_dir = charm_dir + else: + # The simplest of config that the framework can support + charm_config = '{}' + elif isinstance(charm_config, str): + charm_config = dedent(charm_config) + charm_config = yaml.load(charm_config, Loader=yaml.SafeLoader) + charm_config = charm_config.get('options', {}) + return {key: value['default'] for key, value in charm_config.items() + if 'default' in value} + + def add_oci_resource(self, resource_name: str, + contents: typing.Mapping[str, str] = None) -> None: + """Add oci resources to the backend. + + This will register an oci resource and create a temporary file for processing metadata + about the resource. A default set of values will be used for all the file contents + unless a specific contents dict is provided. + + Args: + resource_name: Name of the resource to add custom contents to. + contents: Optional custom dict to write for the named resource. + """ + if not contents: + contents = {'registrypath': 'registrypath', + 'username': 'username', + 'password': 'password', + } + if resource_name not in self._meta.resources.keys(): + raise RuntimeError('Resource {} is not a defined resources'.format(resource_name)) + if self._meta.resources[resource_name].type != "oci-image": + raise RuntimeError('Resource {} is not an OCI Image'.format(resource_name)) + + as_yaml = yaml.dump(contents, Dumper=yaml.SafeDumper) + self._backend._resources_map[resource_name] = ('contents.yaml', as_yaml) + + def add_resource(self, resource_name: str, content: typing.AnyStr) -> None: + """Add content for a resource to the backend. + + This will register the content, so that a call to `Model.resources.fetch(resource_name)` + will return a path to a file containing that content. + + Args: + resource_name: The name of the resource being added + content: Either string or bytes content, which will be the content of the filename + returned by resource-get. If contents is a string, it will be encoded in utf-8 + """ + if resource_name not in self._meta.resources.keys(): + raise RuntimeError('Resource {} is not a defined resources'.format(resource_name)) + record = self._meta.resources[resource_name] + if record.type != "file": + raise RuntimeError( + 'Resource {} is not a file, but actually {}'.format(resource_name, record.type)) + filename = record.filename + if filename is None: + filename = resource_name + + self._backend._resources_map[resource_name] = (filename, content) + + def populate_oci_resources(self) -> None: + """Populate all OCI resources.""" + for name, data in self._meta.resources.items(): + if data.type == "oci-image": + self.add_oci_resource(name) + + def disable_hooks(self) -> None: + """Stop emitting hook events when the model changes. + + This can be used by developers to stop changes to the model from emitting events that + the charm will react to. Call :meth:`.enable_hooks` + to re-enable them. + """ + self._hooks_enabled = False + + def enable_hooks(self) -> None: + """Re-enable hook events from charm.on when the model is changed. + + By default hook events are enabled once you call :meth:`.begin`, + but if you have used :meth:`.disable_hooks`, this can be used to + enable them again. + """ + self._hooks_enabled = True + + @contextmanager + def hooks_disabled(self): + """A context manager to run code with hooks disabled. + + Example:: + + with harness.hooks_disabled(): + # things in here don't fire events + harness.set_leader(True) + harness.update_config(unset=['foo', 'bar']) + # things here will again fire events + """ + if self._hooks_enabled: + self.disable_hooks() + try: + yield None + finally: + self.enable_hooks() + else: + yield None + + def _next_relation_id(self): + rel_id = self._relation_id_counter + self._relation_id_counter += 1 + return rel_id + + def add_relation(self, relation_name: str, remote_app: str) -> int: + """Declare that there is a new relation between this app and `remote_app`. + + Args: + relation_name: The relation on Charm that is being related to + remote_app: The name of the application that is being related to + + Return: + The relation_id created by this add_relation. + """ + rel_id = self._next_relation_id() + self._backend._relation_ids_map.setdefault(relation_name, []).append(rel_id) + self._backend._relation_names[rel_id] = relation_name + self._backend._relation_list_map[rel_id] = [] + self._backend._relation_data[rel_id] = { + remote_app: {}, + self._backend.unit_name: {}, + self._backend.app_name: {}, + } + self._backend._relation_app_and_units[rel_id] = { + "app": remote_app, + "units": [], + } + # Reload the relation_ids list + if self._model is not None: + self._model.relations._invalidate(relation_name) + self._emit_relation_created(relation_name, rel_id, remote_app) + return rel_id + + def _emit_relation_created(self, relation_name: str, relation_id: int, + remote_app: str) -> None: + """Trigger relation-created for a given relation with a given remote application.""" + if self._charm is None or not self._hooks_enabled: + return + if self._charm is None or not self._hooks_enabled: + return + relation = self._model.get_relation(relation_name, relation_id) + app = self._model.get_app(remote_app) + self._charm.on[relation_name].relation_created.emit( + relation, app) + + def add_relation_unit(self, relation_id: int, remote_unit_name: str) -> None: + """Add a new unit to a relation. + + Example:: + + rel_id = harness.add_relation('db', 'postgresql') + harness.add_relation_unit(rel_id, 'postgresql/0') + + This will trigger a `relation_joined` event. This would naturally be + followed by a `relation_changed` event, which you can trigger with + :meth:`.update_relation_data`. This separation is artificial in the + sense that Juju will always fire the two, but is intended to make + testing relations and their data bags slightly more natural. + + Args: + relation_id: The integer relation identifier (as returned by add_relation). + remote_unit_name: A string representing the remote unit that is being added. + + Return: + None + """ + self._backend._relation_list_map[relation_id].append(remote_unit_name) + self._backend._relation_data[relation_id][remote_unit_name] = {} + # TODO: jam 2020-08-03 This is where we could assert that the unit name matches the + # application name (eg you don't have a relation to 'foo' but add units of 'bar/0' + self._backend._relation_app_and_units[relation_id]["units"].append(remote_unit_name) + relation_name = self._backend._relation_names[relation_id] + # Make sure that the Model reloads the relation_list for this relation_id, as well as + # reloading the relation data for this unit. + if self._model is not None: + remote_unit = self._model.get_unit(remote_unit_name) + relation = self._model.get_relation(relation_name, relation_id) + unit_cache = relation.data.get(remote_unit, None) + if unit_cache is not None: + unit_cache._invalidate() + self._model.relations._invalidate(relation_name) + if self._charm is None or not self._hooks_enabled: + return + self._charm.on[relation_name].relation_joined.emit( + relation, remote_unit.app, remote_unit) + + def get_relation_data(self, relation_id: int, app_or_unit: str) -> typing.Mapping: + """Get the relation data bucket for a single app or unit in a given relation. + + This ignores all of the safety checks of who can and can't see data in relations (eg, + non-leaders can't read their own application's relation data because there are no events + that keep that data up-to-date for the unit). + + Args: + relation_id: The relation whose content we want to look at. + app_or_unit: The name of the application or unit whose data we want to read + Return: + a dict containing the relation data for `app_or_unit` or None. + + Raises: + KeyError: if relation_id doesn't exist + """ + return self._backend._relation_data[relation_id].get(app_or_unit, None) + + def get_pod_spec(self) -> (typing.Mapping, typing.Mapping): + """Return the content of the pod spec as last set by the charm. + + This returns both the pod spec and any k8s_resources that were supplied. + See the signature of Model.pod.set_spec + """ + return self._backend._pod_spec + + def get_workload_version(self) -> str: + """Read the workload version that was set by the unit.""" + return self._backend._workload_version + + def set_model_name(self, name: str) -> None: + """Set the name of the Model that this is representing. + + This cannot be called once begin() has been called. But it lets you set the value that + will be returned by Model.name. + """ + if self._charm is not None: + raise RuntimeError('cannot set the Model name after begin()') + self._backend.model_name = name + + def update_relation_data( + self, + relation_id: int, + app_or_unit: str, + key_values: typing.Mapping, + ) -> None: + """Update the relation data for a given unit or application in a given relation. + + This also triggers the `relation_changed` event for this relation_id. + + Args: + relation_id: The integer relation_id representing this relation. + app_or_unit: The unit or application name that is being updated. + This can be the local or remote application. + key_values: Each key/value will be updated in the relation data. + """ + relation_name = self._backend._relation_names[relation_id] + relation = self._model.get_relation(relation_name, relation_id) + if '/' in app_or_unit: + entity = self._model.get_unit(app_or_unit) + else: + entity = self._model.get_app(app_or_unit) + rel_data = relation.data.get(entity, None) + if rel_data is not None: + # rel_data may have cached now-stale data, so _invalidate() it. + # Note, this won't cause the data to be loaded if it wasn't already. + rel_data._invalidate() + + new_values = self._backend._relation_data[relation_id][app_or_unit].copy() + for k, v in key_values.items(): + if v == '': + new_values.pop(k, None) + else: + new_values[k] = v + self._backend._relation_data[relation_id][app_or_unit] = new_values + + if app_or_unit == self._model.unit.name: + # No events for our own unit + return + if app_or_unit == self._model.app.name: + # updating our own app only generates an event if it is a peer relation and we + # aren't the leader + is_peer = self._meta.relations[relation_name].role.is_peer() + if not is_peer: + return + if self._model.unit.is_leader(): + return + self._emit_relation_changed(relation_id, app_or_unit) + + def _emit_relation_changed(self, relation_id, app_or_unit): + if self._charm is None or not self._hooks_enabled: + return + rel_name = self._backend._relation_names[relation_id] + relation = self.model.get_relation(rel_name, relation_id) + if '/' in app_or_unit: + app_name = app_or_unit.split('/')[0] + unit_name = app_or_unit + app = self.model.get_app(app_name) + unit = self.model.get_unit(unit_name) + args = (relation, app, unit) + else: + app_name = app_or_unit + app = self.model.get_app(app_name) + args = (relation, app) + self._charm.on[rel_name].relation_changed.emit(*args) + + def _update_config( + self, + key_values: typing.Mapping[str, str] = None, + unset: typing.Iterable[str] = (), + ) -> None: + """Update the config as seen by the charm. + + This will *not* trigger a `config_changed` event, and is intended for internal use. + + Note that the `key_values` mapping will only add or update configuration items. + To remove existing ones, see the `unset` parameter. + + Args: + key_values: A Mapping of key:value pairs to update in config. + unset: An iterable of keys to remove from Config. (Note that this does + not currently reset the config values to the default defined in config.yaml.) + """ + # NOTE: jam 2020-03-01 Note that this sort of works "by accident". Config + # is a LazyMapping, but its _load returns a dict and this method mutates + # the dict that Config is caching. Arguably we should be doing some sort + # of charm.framework.model.config._invalidate() + config = self._backend._config + if key_values is not None: + for key, value in key_values.items(): + config[key] = value + for key in unset: + config.pop(key, None) + + def update_config( + self, + key_values: typing.Mapping[str, str] = None, + unset: typing.Iterable[str] = (), + ) -> None: + """Update the config as seen by the charm. + + This will trigger a `config_changed` event. + + Note that the `key_values` mapping will only add or update configuration items. + To remove existing ones, see the `unset` parameter. + + Args: + key_values: A Mapping of key:value pairs to update in config. + unset: An iterable of keys to remove from Config. (Note that this does + not currently reset the config values to the default defined in config.yaml.) + """ + self._update_config(key_values, unset) + if self._charm is None or not self._hooks_enabled: + return + self._charm.on.config_changed.emit() + + def set_leader(self, is_leader: bool = True) -> None: + """Set whether this unit is the leader or not. + + If this charm becomes a leader then `leader_elected` will be triggered. + + Args: + is_leader: True/False as to whether this unit is the leader. + """ + was_leader = self._backend._is_leader + self._backend._is_leader = is_leader + # Note: jam 2020-03-01 currently is_leader is cached at the ModelBackend level, not in + # the Model objects, so this automatically gets noticed. + if is_leader and not was_leader and self._charm is not None and self._hooks_enabled: + self._charm.on.leader_elected.emit() + + def _get_backend_calls(self, reset: bool = True) -> list: + """Return the calls that we have made to the TestingModelBackend. + + This is useful mostly for testing the framework itself, so that we can assert that we + do/don't trigger extra calls. + + Args: + reset: If True, reset the calls list back to empty, if false, the call list is + preserved. + + Return: + ``[(call1, args...), (call2, args...)]`` + """ + calls = self._backend._calls.copy() + if reset: + self._backend._calls.clear() + return calls + + +def _record_calls(cls): + """Replace methods on cls with methods that record that they have been called. + + Iterate all attributes of cls, and for public methods, replace them with a wrapped method + that records the method called along with the arguments and keyword arguments. + """ + for meth_name, orig_method in cls.__dict__.items(): + if meth_name.startswith('_'): + continue + + def decorator(orig_method): + def wrapped(self, *args, **kwargs): + full_args = (orig_method.__name__,) + args + if kwargs: + full_args = full_args + (kwargs,) + self._calls.append(full_args) + return orig_method(self, *args, **kwargs) + return wrapped + + setattr(cls, meth_name, decorator(orig_method)) + return cls + + +class _ResourceEntry: + """Tracks the contents of a Resource.""" + + def __init__(self, resource_name): + self.name = resource_name + + +@_record_calls +class _TestingModelBackend: + """This conforms to the interface for ModelBackend but provides canned data. + + DO NOT use this class directly, it is used by `Harness`_ to drive the model. + `Harness`_ is responsible for maintaining the internal consistency of the values here, + as the only public methods of this type are for implementing ModelBackend. + """ + + def __init__(self, unit_name, meta): + self.unit_name = unit_name + self.app_name = self.unit_name.split('/')[0] + self.model_name = None + self._calls = [] + self._meta = meta + self._is_leader = None + self._relation_ids_map = {} # relation name to [relation_ids,...] + self._relation_names = {} # reverse map from relation_id to relation_name + self._relation_list_map = {} # relation_id: [unit_name,...] + self._relation_data = {} # {relation_id: {name: data}} + # {relation_id: {"app": app_name, "units": ["app/0",...]} + self._relation_app_and_units = {} + self._config = {} + self._is_leader = False + self._resources_map = {} # {resource_name: resource_content} + self._pod_spec = None + self._app_status = {'status': 'unknown', 'message': ''} + self._unit_status = {'status': 'maintenance', 'message': ''} + self._workload_version = None + self._resource_dir = None + + def _cleanup(self): + if self._resource_dir is not None: + self._resource_dir.cleanup() + self._resource_dir = None + + def _get_resource_dir(self) -> pathlib.Path: + if self._resource_dir is None: + # In actual Juju, the resource path for a charm's resource is + # $AGENT_DIR/resources/$RESOURCE_NAME/$RESOURCE_FILENAME + # However, charms shouldn't depend on this. + self._resource_dir = tempfile.TemporaryDirectory(prefix='tmp-ops-test-resource-') + return pathlib.Path(self._resource_dir.name) + + def relation_ids(self, relation_name): + try: + return self._relation_ids_map[relation_name] + except KeyError as e: + if relation_name not in self._meta.relations: + raise model.ModelError('{} is not a known relation'.format(relation_name)) from e + return [] + + def relation_list(self, relation_id): + try: + return self._relation_list_map[relation_id] + except KeyError as e: + raise model.RelationNotFoundError from e + + def relation_get(self, relation_id, member_name, is_app): + if is_app and '/' in member_name: + member_name = member_name.split('/')[0] + if relation_id not in self._relation_data: + raise model.RelationNotFoundError() + return self._relation_data[relation_id][member_name].copy() + + def relation_set(self, relation_id, key, value, is_app): + relation = self._relation_data[relation_id] + if is_app: + bucket_key = self.app_name + else: + bucket_key = self.unit_name + if bucket_key not in relation: + relation[bucket_key] = {} + bucket = relation[bucket_key] + if value == '': + bucket.pop(key, None) + else: + bucket[key] = value + + def config_get(self): + return self._config + + def is_leader(self): + return self._is_leader + + def application_version_set(self, version): + self._workload_version = version + + def resource_get(self, resource_name): + if resource_name not in self._resources_map: + raise model.ModelError( + "ERROR could not download resource: HTTP request failed: " + "Get https://.../units/unit-{}/resources/{}: resource#{}/{} not found".format( + self.unit_name.replace('/', '-'), resource_name, self.app_name, resource_name + )) + filename, contents = self._resources_map[resource_name] + resource_dir = self._get_resource_dir() + resource_filename = resource_dir / resource_name / filename + if not resource_filename.exists(): + if isinstance(contents, bytes): + mode = 'wb' + else: + mode = 'wt' + resource_filename.parent.mkdir(exist_ok=True) + with resource_filename.open(mode=mode) as resource_file: + resource_file.write(contents) + return resource_filename + + def pod_spec_set(self, spec, k8s_resources): + self._pod_spec = (spec, k8s_resources) + + def status_get(self, *, is_app=False): + if is_app: + return self._app_status + else: + return self._unit_status + + def status_set(self, status, message='', *, is_app=False): + if is_app: + self._app_status = {'status': status, 'message': message} + else: + self._unit_status = {'status': status, 'message': message} + + def storage_list(self, name): + raise NotImplementedError(self.storage_list) + + def storage_get(self, storage_name_id, attribute): + raise NotImplementedError(self.storage_get) + + def storage_add(self, name, count=1): + raise NotImplementedError(self.storage_add) + + def action_get(self): + raise NotImplementedError(self.action_get) + + def action_set(self, results): + raise NotImplementedError(self.action_set) + + def action_log(self, message): + raise NotImplementedError(self.action_log) + + def action_fail(self, message=''): + raise NotImplementedError(self.action_fail) + + def network_get(self, endpoint_name, relation_id=None): + raise NotImplementedError(self.network_get) diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/version.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/version.py new file mode 100644 index 00000000..db9e9817 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/ops/version.py @@ -0,0 +1,3 @@ +# this is a generated file + +version = '1.1.0' diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/__init__.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/__init__.py new file mode 100644 index 00000000..86d07b55 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/__init__.py @@ -0,0 +1,427 @@ + +from .error import * + +from .tokens import * +from .events import * +from .nodes import * + +from .loader import * +from .dumper import * + +__version__ = '5.4.1' +try: + from .cyaml import * + __with_libyaml__ = True +except ImportError: + __with_libyaml__ = False + +import io + +#------------------------------------------------------------------------------ +# Warnings control +#------------------------------------------------------------------------------ + +# 'Global' warnings state: +_warnings_enabled = { + 'YAMLLoadWarning': True, +} + +# Get or set global warnings' state +def warnings(settings=None): + if settings is None: + return _warnings_enabled + + if type(settings) is dict: + for key in settings: + if key in _warnings_enabled: + _warnings_enabled[key] = settings[key] + +# Warn when load() is called without Loader=... +class YAMLLoadWarning(RuntimeWarning): + pass + +def load_warning(method): + if _warnings_enabled['YAMLLoadWarning'] is False: + return + + import warnings + + message = ( + "calling yaml.%s() without Loader=... is deprecated, as the " + "default Loader is unsafe. Please read " + "https://msg.pyyaml.org/load for full details." + ) % method + + warnings.warn(message, YAMLLoadWarning, stacklevel=3) + +#------------------------------------------------------------------------------ +def scan(stream, Loader=Loader): + """ + Scan a YAML stream and produce scanning tokens. + """ + loader = Loader(stream) + try: + while loader.check_token(): + yield loader.get_token() + finally: + loader.dispose() + +def parse(stream, Loader=Loader): + """ + Parse a YAML stream and produce parsing events. + """ + loader = Loader(stream) + try: + while loader.check_event(): + yield loader.get_event() + finally: + loader.dispose() + +def compose(stream, Loader=Loader): + """ + Parse the first YAML document in a stream + and produce the corresponding representation tree. + """ + loader = Loader(stream) + try: + return loader.get_single_node() + finally: + loader.dispose() + +def compose_all(stream, Loader=Loader): + """ + Parse all YAML documents in a stream + and produce corresponding representation trees. + """ + loader = Loader(stream) + try: + while loader.check_node(): + yield loader.get_node() + finally: + loader.dispose() + +def load(stream, Loader=None): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + """ + if Loader is None: + load_warning('load') + Loader = FullLoader + + loader = Loader(stream) + try: + return loader.get_single_data() + finally: + loader.dispose() + +def load_all(stream, Loader=None): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + """ + if Loader is None: + load_warning('load_all') + Loader = FullLoader + + loader = Loader(stream) + try: + while loader.check_data(): + yield loader.get_data() + finally: + loader.dispose() + +def full_load(stream): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + + Resolve all tags except those known to be + unsafe on untrusted input. + """ + return load(stream, FullLoader) + +def full_load_all(stream): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + + Resolve all tags except those known to be + unsafe on untrusted input. + """ + return load_all(stream, FullLoader) + +def safe_load(stream): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + + Resolve only basic YAML tags. This is known + to be safe for untrusted input. + """ + return load(stream, SafeLoader) + +def safe_load_all(stream): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + + Resolve only basic YAML tags. This is known + to be safe for untrusted input. + """ + return load_all(stream, SafeLoader) + +def unsafe_load(stream): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + + Resolve all tags, even those known to be + unsafe on untrusted input. + """ + return load(stream, UnsafeLoader) + +def unsafe_load_all(stream): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + + Resolve all tags, even those known to be + unsafe on untrusted input. + """ + return load_all(stream, UnsafeLoader) + +def emit(events, stream=None, Dumper=Dumper, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None): + """ + Emit YAML parsing events into a stream. + If stream is None, return the produced string instead. + """ + getvalue = None + if stream is None: + stream = io.StringIO() + getvalue = stream.getvalue + dumper = Dumper(stream, canonical=canonical, indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + try: + for event in events: + dumper.emit(event) + finally: + dumper.dispose() + if getvalue: + return getvalue() + +def serialize_all(nodes, stream=None, Dumper=Dumper, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + """ + Serialize a sequence of representation trees into a YAML stream. + If stream is None, return the produced string instead. + """ + getvalue = None + if stream is None: + if encoding is None: + stream = io.StringIO() + else: + stream = io.BytesIO() + getvalue = stream.getvalue + dumper = Dumper(stream, canonical=canonical, indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break, + encoding=encoding, version=version, tags=tags, + explicit_start=explicit_start, explicit_end=explicit_end) + try: + dumper.open() + for node in nodes: + dumper.serialize(node) + dumper.close() + finally: + dumper.dispose() + if getvalue: + return getvalue() + +def serialize(node, stream=None, Dumper=Dumper, **kwds): + """ + Serialize a representation tree into a YAML stream. + If stream is None, return the produced string instead. + """ + return serialize_all([node], stream, Dumper=Dumper, **kwds) + +def dump_all(documents, stream=None, Dumper=Dumper, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + """ + Serialize a sequence of Python objects into a YAML stream. + If stream is None, return the produced string instead. + """ + getvalue = None + if stream is None: + if encoding is None: + stream = io.StringIO() + else: + stream = io.BytesIO() + getvalue = stream.getvalue + dumper = Dumper(stream, default_style=default_style, + default_flow_style=default_flow_style, + canonical=canonical, indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break, + encoding=encoding, version=version, tags=tags, + explicit_start=explicit_start, explicit_end=explicit_end, sort_keys=sort_keys) + try: + dumper.open() + for data in documents: + dumper.represent(data) + dumper.close() + finally: + dumper.dispose() + if getvalue: + return getvalue() + +def dump(data, stream=None, Dumper=Dumper, **kwds): + """ + Serialize a Python object into a YAML stream. + If stream is None, return the produced string instead. + """ + return dump_all([data], stream, Dumper=Dumper, **kwds) + +def safe_dump_all(documents, stream=None, **kwds): + """ + Serialize a sequence of Python objects into a YAML stream. + Produce only basic YAML tags. + If stream is None, return the produced string instead. + """ + return dump_all(documents, stream, Dumper=SafeDumper, **kwds) + +def safe_dump(data, stream=None, **kwds): + """ + Serialize a Python object into a YAML stream. + Produce only basic YAML tags. + If stream is None, return the produced string instead. + """ + return dump_all([data], stream, Dumper=SafeDumper, **kwds) + +def add_implicit_resolver(tag, regexp, first=None, + Loader=None, Dumper=Dumper): + """ + Add an implicit scalar detector. + If an implicit scalar value matches the given regexp, + the corresponding tag is assigned to the scalar. + first is a sequence of possible initial characters or None. + """ + if Loader is None: + loader.Loader.add_implicit_resolver(tag, regexp, first) + loader.FullLoader.add_implicit_resolver(tag, regexp, first) + loader.UnsafeLoader.add_implicit_resolver(tag, regexp, first) + else: + Loader.add_implicit_resolver(tag, regexp, first) + Dumper.add_implicit_resolver(tag, regexp, first) + +def add_path_resolver(tag, path, kind=None, Loader=None, Dumper=Dumper): + """ + Add a path based resolver for the given tag. + A path is a list of keys that forms a path + to a node in the representation tree. + Keys can be string values, integers, or None. + """ + if Loader is None: + loader.Loader.add_path_resolver(tag, path, kind) + loader.FullLoader.add_path_resolver(tag, path, kind) + loader.UnsafeLoader.add_path_resolver(tag, path, kind) + else: + Loader.add_path_resolver(tag, path, kind) + Dumper.add_path_resolver(tag, path, kind) + +def add_constructor(tag, constructor, Loader=None): + """ + Add a constructor for the given tag. + Constructor is a function that accepts a Loader instance + and a node object and produces the corresponding Python object. + """ + if Loader is None: + loader.Loader.add_constructor(tag, constructor) + loader.FullLoader.add_constructor(tag, constructor) + loader.UnsafeLoader.add_constructor(tag, constructor) + else: + Loader.add_constructor(tag, constructor) + +def add_multi_constructor(tag_prefix, multi_constructor, Loader=None): + """ + Add a multi-constructor for the given tag prefix. + Multi-constructor is called for a node if its tag starts with tag_prefix. + Multi-constructor accepts a Loader instance, a tag suffix, + and a node object and produces the corresponding Python object. + """ + if Loader is None: + loader.Loader.add_multi_constructor(tag_prefix, multi_constructor) + loader.FullLoader.add_multi_constructor(tag_prefix, multi_constructor) + loader.UnsafeLoader.add_multi_constructor(tag_prefix, multi_constructor) + else: + Loader.add_multi_constructor(tag_prefix, multi_constructor) + +def add_representer(data_type, representer, Dumper=Dumper): + """ + Add a representer for the given type. + Representer is a function accepting a Dumper instance + and an instance of the given data type + and producing the corresponding representation node. + """ + Dumper.add_representer(data_type, representer) + +def add_multi_representer(data_type, multi_representer, Dumper=Dumper): + """ + Add a representer for the given type. + Multi-representer is a function accepting a Dumper instance + and an instance of the given data type or subtype + and producing the corresponding representation node. + """ + Dumper.add_multi_representer(data_type, multi_representer) + +class YAMLObjectMetaclass(type): + """ + The metaclass for YAMLObject. + """ + def __init__(cls, name, bases, kwds): + super(YAMLObjectMetaclass, cls).__init__(name, bases, kwds) + if 'yaml_tag' in kwds and kwds['yaml_tag'] is not None: + if isinstance(cls.yaml_loader, list): + for loader in cls.yaml_loader: + loader.add_constructor(cls.yaml_tag, cls.from_yaml) + else: + cls.yaml_loader.add_constructor(cls.yaml_tag, cls.from_yaml) + + cls.yaml_dumper.add_representer(cls, cls.to_yaml) + +class YAMLObject(metaclass=YAMLObjectMetaclass): + """ + An object that can dump itself to a YAML stream + and load itself from a YAML stream. + """ + + __slots__ = () # no direct instantiation, so allow immutable subclasses + + yaml_loader = [Loader, FullLoader, UnsafeLoader] + yaml_dumper = Dumper + + yaml_tag = None + yaml_flow_style = None + + @classmethod + def from_yaml(cls, loader, node): + """ + Convert a representation node to a Python object. + """ + return loader.construct_yaml_object(node, cls) + + @classmethod + def to_yaml(cls, dumper, data): + """ + Convert a Python object to a representation node. + """ + return dumper.represent_yaml_object(cls.yaml_tag, data, cls, + flow_style=cls.yaml_flow_style) + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/_yaml.cpython-38-x86_64-linux-gnu.so b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/_yaml.cpython-38-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..801c0e2a72a862a33d640a576ca969b684dc8e86 GIT binary patch literal 2342916 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ÓMog`wQl-izT%Lvq6xkp2flmOG+$G)s?@ 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≫fBJVcI`IZ9Td_0wIkB9 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 z%0D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])hyI$dXPprM}>jk7UU<suWoGl0VX<LwPq{@hrn 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 N_)!ud%CT37_dhw&lEDA~ literal 0 HcmV?d00001 diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/composer.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/composer.py new file mode 100644 index 00000000..6d15cb40 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/composer.py @@ -0,0 +1,139 @@ + +__all__ = ['Composer', 'ComposerError'] + +from .error import MarkedYAMLError +from .events import * +from .nodes import * + +class ComposerError(MarkedYAMLError): + pass + +class Composer: + + def __init__(self): + self.anchors = {} + + def check_node(self): + # Drop the STREAM-START event. + if self.check_event(StreamStartEvent): + self.get_event() + + # If there are more documents available? + return not self.check_event(StreamEndEvent) + + def get_node(self): + # Get the root node of the next document. + if not self.check_event(StreamEndEvent): + return self.compose_document() + + def get_single_node(self): + # Drop the STREAM-START event. + self.get_event() + + # Compose a document if the stream is not empty. + document = None + if not self.check_event(StreamEndEvent): + document = self.compose_document() + + # Ensure that the stream contains no more documents. + if not self.check_event(StreamEndEvent): + event = self.get_event() + raise ComposerError("expected a single document in the stream", + document.start_mark, "but found another document", + event.start_mark) + + # Drop the STREAM-END event. + self.get_event() + + return document + + def compose_document(self): + # Drop the DOCUMENT-START event. + self.get_event() + + # Compose the root node. + node = self.compose_node(None, None) + + # Drop the DOCUMENT-END event. + self.get_event() + + self.anchors = {} + return node + + def compose_node(self, parent, index): + if self.check_event(AliasEvent): + event = self.get_event() + anchor = event.anchor + if anchor not in self.anchors: + raise ComposerError(None, None, "found undefined alias %r" + % anchor, event.start_mark) + return self.anchors[anchor] + event = self.peek_event() + anchor = event.anchor + if anchor is not None: + if anchor in self.anchors: + raise ComposerError("found duplicate anchor %r; first occurrence" + % anchor, self.anchors[anchor].start_mark, + "second occurrence", event.start_mark) + self.descend_resolver(parent, index) + if self.check_event(ScalarEvent): + node = self.compose_scalar_node(anchor) + elif self.check_event(SequenceStartEvent): + node = self.compose_sequence_node(anchor) + elif self.check_event(MappingStartEvent): + node = self.compose_mapping_node(anchor) + self.ascend_resolver() + return node + + def compose_scalar_node(self, anchor): + event = self.get_event() + tag = event.tag + if tag is None or tag == '!': + tag = self.resolve(ScalarNode, event.value, event.implicit) + node = ScalarNode(tag, event.value, + event.start_mark, event.end_mark, style=event.style) + if anchor is not None: + self.anchors[anchor] = node + return node + + def compose_sequence_node(self, anchor): + start_event = self.get_event() + tag = start_event.tag + if tag is None or tag == '!': + tag = self.resolve(SequenceNode, None, start_event.implicit) + node = SequenceNode(tag, [], + start_event.start_mark, None, + flow_style=start_event.flow_style) + if anchor is not None: + self.anchors[anchor] = node + index = 0 + while not self.check_event(SequenceEndEvent): + node.value.append(self.compose_node(node, index)) + index += 1 + end_event = self.get_event() + node.end_mark = end_event.end_mark + return node + + def compose_mapping_node(self, anchor): + start_event = self.get_event() + tag = start_event.tag + if tag is None or tag == '!': + tag = self.resolve(MappingNode, None, start_event.implicit) + node = MappingNode(tag, [], + start_event.start_mark, None, + flow_style=start_event.flow_style) + if anchor is not None: + self.anchors[anchor] = node + while not self.check_event(MappingEndEvent): + #key_event = self.peek_event() + item_key = self.compose_node(node, None) + #if item_key in node.value: + # raise ComposerError("while composing a mapping", start_event.start_mark, + # "found duplicate key", key_event.start_mark) + item_value = self.compose_node(node, item_key) + #node.value[item_key] = item_value + node.value.append((item_key, item_value)) + end_event = self.get_event() + node.end_mark = end_event.end_mark + return node + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/constructor.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/constructor.py new file mode 100644 index 00000000..619acd30 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/constructor.py @@ -0,0 +1,748 @@ + +__all__ = [ + 'BaseConstructor', + 'SafeConstructor', + 'FullConstructor', + 'UnsafeConstructor', + 'Constructor', + 'ConstructorError' +] + +from .error import * +from .nodes import * + +import collections.abc, datetime, base64, binascii, re, sys, types + +class ConstructorError(MarkedYAMLError): + pass + +class BaseConstructor: + + yaml_constructors = {} + yaml_multi_constructors = {} + + def __init__(self): + self.constructed_objects = {} + self.recursive_objects = {} + self.state_generators = [] + self.deep_construct = False + + def check_data(self): + # If there are more documents available? + return self.check_node() + + def check_state_key(self, key): + """Block special attributes/methods from being set in a newly created + object, to prevent user-controlled methods from being called during + deserialization""" + if self.get_state_keys_blacklist_regexp().match(key): + raise ConstructorError(None, None, + "blacklisted key '%s' in instance state found" % (key,), None) + + def get_data(self): + # Construct and return the next document. + if self.check_node(): + return self.construct_document(self.get_node()) + + def get_single_data(self): + # Ensure that the stream contains a single document and construct it. + node = self.get_single_node() + if node is not None: + return self.construct_document(node) + return None + + def construct_document(self, node): + data = self.construct_object(node) + while self.state_generators: + state_generators = self.state_generators + self.state_generators = [] + for generator in state_generators: + for dummy in generator: + pass + self.constructed_objects = {} + self.recursive_objects = {} + self.deep_construct = False + return data + + def construct_object(self, node, deep=False): + if node in self.constructed_objects: + return self.constructed_objects[node] + if deep: + old_deep = self.deep_construct + self.deep_construct = True + if node in self.recursive_objects: + raise ConstructorError(None, None, + "found unconstructable recursive node", node.start_mark) + self.recursive_objects[node] = None + constructor = None + tag_suffix = None + if node.tag in self.yaml_constructors: + constructor = self.yaml_constructors[node.tag] + else: + for tag_prefix in self.yaml_multi_constructors: + if tag_prefix is not None and node.tag.startswith(tag_prefix): + tag_suffix = node.tag[len(tag_prefix):] + constructor = self.yaml_multi_constructors[tag_prefix] + break + else: + if None in self.yaml_multi_constructors: + tag_suffix = node.tag + constructor = self.yaml_multi_constructors[None] + elif None in self.yaml_constructors: + constructor = self.yaml_constructors[None] + elif isinstance(node, ScalarNode): + constructor = self.__class__.construct_scalar + elif isinstance(node, SequenceNode): + constructor = self.__class__.construct_sequence + elif isinstance(node, MappingNode): + constructor = self.__class__.construct_mapping + if tag_suffix is None: + data = constructor(self, node) + else: + data = constructor(self, tag_suffix, node) + if isinstance(data, types.GeneratorType): + generator = data + data = next(generator) + if self.deep_construct: + for dummy in generator: + pass + else: + self.state_generators.append(generator) + self.constructed_objects[node] = data + del self.recursive_objects[node] + if deep: + self.deep_construct = old_deep + return data + + def construct_scalar(self, node): + if not isinstance(node, ScalarNode): + raise ConstructorError(None, None, + "expected a scalar node, but found %s" % node.id, + node.start_mark) + return node.value + + def construct_sequence(self, node, deep=False): + if not isinstance(node, SequenceNode): + raise ConstructorError(None, None, + "expected a sequence node, but found %s" % node.id, + node.start_mark) + return [self.construct_object(child, deep=deep) + for child in node.value] + + def construct_mapping(self, node, deep=False): + if not isinstance(node, MappingNode): + raise ConstructorError(None, None, + "expected a mapping node, but found %s" % node.id, + node.start_mark) + mapping = {} + for key_node, value_node in node.value: + key = self.construct_object(key_node, deep=deep) + if not isinstance(key, collections.abc.Hashable): + raise ConstructorError("while constructing a mapping", node.start_mark, + "found unhashable key", key_node.start_mark) + value = self.construct_object(value_node, deep=deep) + mapping[key] = value + return mapping + + def construct_pairs(self, node, deep=False): + if not isinstance(node, MappingNode): + raise ConstructorError(None, None, + "expected a mapping node, but found %s" % node.id, + node.start_mark) + pairs = [] + for key_node, value_node in node.value: + key = self.construct_object(key_node, deep=deep) + value = self.construct_object(value_node, deep=deep) + pairs.append((key, value)) + return pairs + + @classmethod + def add_constructor(cls, tag, constructor): + if not 'yaml_constructors' in cls.__dict__: + cls.yaml_constructors = cls.yaml_constructors.copy() + cls.yaml_constructors[tag] = constructor + + @classmethod + def add_multi_constructor(cls, tag_prefix, multi_constructor): + if not 'yaml_multi_constructors' in cls.__dict__: + cls.yaml_multi_constructors = cls.yaml_multi_constructors.copy() + cls.yaml_multi_constructors[tag_prefix] = multi_constructor + +class SafeConstructor(BaseConstructor): + + def construct_scalar(self, node): + if isinstance(node, MappingNode): + for key_node, value_node in node.value: + if key_node.tag == 'tag:yaml.org,2002:value': + return self.construct_scalar(value_node) + return super().construct_scalar(node) + + def flatten_mapping(self, node): + merge = [] + index = 0 + while index < len(node.value): + key_node, value_node = node.value[index] + if key_node.tag == 'tag:yaml.org,2002:merge': + del node.value[index] + if isinstance(value_node, MappingNode): + self.flatten_mapping(value_node) + merge.extend(value_node.value) + elif isinstance(value_node, SequenceNode): + submerge = [] + for subnode in value_node.value: + if not isinstance(subnode, MappingNode): + raise ConstructorError("while constructing a mapping", + node.start_mark, + "expected a mapping for merging, but found %s" + % subnode.id, subnode.start_mark) + self.flatten_mapping(subnode) + submerge.append(subnode.value) + submerge.reverse() + for value in submerge: + merge.extend(value) + else: + raise ConstructorError("while constructing a mapping", node.start_mark, + "expected a mapping or list of mappings for merging, but found %s" + % value_node.id, value_node.start_mark) + elif key_node.tag == 'tag:yaml.org,2002:value': + key_node.tag = 'tag:yaml.org,2002:str' + index += 1 + else: + index += 1 + if merge: + node.value = merge + node.value + + def construct_mapping(self, node, deep=False): + if isinstance(node, MappingNode): + self.flatten_mapping(node) + return super().construct_mapping(node, deep=deep) + + def construct_yaml_null(self, node): + self.construct_scalar(node) + return None + + bool_values = { + 'yes': True, + 'no': False, + 'true': True, + 'false': False, + 'on': True, + 'off': False, + } + + def construct_yaml_bool(self, node): + value = self.construct_scalar(node) + return self.bool_values[value.lower()] + + def construct_yaml_int(self, node): + value = self.construct_scalar(node) + value = value.replace('_', '') + sign = +1 + if value[0] == '-': + sign = -1 + if value[0] in '+-': + value = value[1:] + if value == '0': + return 0 + elif value.startswith('0b'): + return sign*int(value[2:], 2) + elif value.startswith('0x'): + return sign*int(value[2:], 16) + elif value[0] == '0': + return sign*int(value, 8) + elif ':' in value: + digits = [int(part) for part in value.split(':')] + digits.reverse() + base = 1 + value = 0 + for digit in digits: + value += digit*base + base *= 60 + return sign*value + else: + return sign*int(value) + + inf_value = 1e300 + while inf_value != inf_value*inf_value: + inf_value *= inf_value + nan_value = -inf_value/inf_value # Trying to make a quiet NaN (like C99). + + def construct_yaml_float(self, node): + value = self.construct_scalar(node) + value = value.replace('_', '').lower() + sign = +1 + if value[0] == '-': + sign = -1 + if value[0] in '+-': + value = value[1:] + if value == '.inf': + return sign*self.inf_value + elif value == '.nan': + return self.nan_value + elif ':' in value: + digits = [float(part) for part in value.split(':')] + digits.reverse() + base = 1 + value = 0.0 + for digit in digits: + value += digit*base + base *= 60 + return sign*value + else: + return sign*float(value) + + def construct_yaml_binary(self, node): + try: + value = self.construct_scalar(node).encode('ascii') + except UnicodeEncodeError as exc: + raise ConstructorError(None, None, + "failed to convert base64 data into ascii: %s" % exc, + node.start_mark) + try: + if hasattr(base64, 'decodebytes'): + return base64.decodebytes(value) + else: + return base64.decodestring(value) + except binascii.Error as exc: + raise ConstructorError(None, None, + "failed to decode base64 data: %s" % exc, node.start_mark) + + timestamp_regexp = re.compile( + r'''^(?P<year>[0-9][0-9][0-9][0-9]) + -(?P<month>[0-9][0-9]?) + -(?P<day>[0-9][0-9]?) + (?:(?:[Tt]|[ \t]+) + (?P<hour>[0-9][0-9]?) + :(?P<minute>[0-9][0-9]) + :(?P<second>[0-9][0-9]) + (?:\.(?P<fraction>[0-9]*))? + (?:[ \t]*(?P<tz>Z|(?P<tz_sign>[-+])(?P<tz_hour>[0-9][0-9]?) + (?::(?P<tz_minute>[0-9][0-9]))?))?)?$''', re.X) + + def construct_yaml_timestamp(self, node): + value = self.construct_scalar(node) + match = self.timestamp_regexp.match(node.value) + values = match.groupdict() + year = int(values['year']) + month = int(values['month']) + day = int(values['day']) + if not values['hour']: + return datetime.date(year, month, day) + hour = int(values['hour']) + minute = int(values['minute']) + second = int(values['second']) + fraction = 0 + tzinfo = None + if values['fraction']: + fraction = values['fraction'][:6] + while len(fraction) < 6: + fraction += '0' + fraction = int(fraction) + if values['tz_sign']: + tz_hour = int(values['tz_hour']) + tz_minute = int(values['tz_minute'] or 0) + delta = datetime.timedelta(hours=tz_hour, minutes=tz_minute) + if values['tz_sign'] == '-': + delta = -delta + tzinfo = datetime.timezone(delta) + elif values['tz']: + tzinfo = datetime.timezone.utc + return datetime.datetime(year, month, day, hour, minute, second, fraction, + tzinfo=tzinfo) + + def construct_yaml_omap(self, node): + # Note: we do not check for duplicate keys, because it's too + # CPU-expensive. + omap = [] + yield omap + if not isinstance(node, SequenceNode): + raise ConstructorError("while constructing an ordered map", node.start_mark, + "expected a sequence, but found %s" % node.id, node.start_mark) + for subnode in node.value: + if not isinstance(subnode, MappingNode): + raise ConstructorError("while constructing an ordered map", node.start_mark, + "expected a mapping of length 1, but found %s" % subnode.id, + subnode.start_mark) + if len(subnode.value) != 1: + raise ConstructorError("while constructing an ordered map", node.start_mark, + "expected a single mapping item, but found %d items" % len(subnode.value), + subnode.start_mark) + key_node, value_node = subnode.value[0] + key = self.construct_object(key_node) + value = self.construct_object(value_node) + omap.append((key, value)) + + def construct_yaml_pairs(self, node): + # Note: the same code as `construct_yaml_omap`. + pairs = [] + yield pairs + if not isinstance(node, SequenceNode): + raise ConstructorError("while constructing pairs", node.start_mark, + "expected a sequence, but found %s" % node.id, node.start_mark) + for subnode in node.value: + if not isinstance(subnode, MappingNode): + raise ConstructorError("while constructing pairs", node.start_mark, + "expected a mapping of length 1, but found %s" % subnode.id, + subnode.start_mark) + if len(subnode.value) != 1: + raise ConstructorError("while constructing pairs", node.start_mark, + "expected a single mapping item, but found %d items" % len(subnode.value), + subnode.start_mark) + key_node, value_node = subnode.value[0] + key = self.construct_object(key_node) + value = self.construct_object(value_node) + pairs.append((key, value)) + + def construct_yaml_set(self, node): + data = set() + yield data + value = self.construct_mapping(node) + data.update(value) + + def construct_yaml_str(self, node): + return self.construct_scalar(node) + + def construct_yaml_seq(self, node): + data = [] + yield data + data.extend(self.construct_sequence(node)) + + def construct_yaml_map(self, node): + data = {} + yield data + value = self.construct_mapping(node) + data.update(value) + + def construct_yaml_object(self, node, cls): + data = cls.__new__(cls) + yield data + if hasattr(data, '__setstate__'): + state = self.construct_mapping(node, deep=True) + data.__setstate__(state) + else: + state = self.construct_mapping(node) + data.__dict__.update(state) + + def construct_undefined(self, node): + raise ConstructorError(None, None, + "could not determine a constructor for the tag %r" % node.tag, + node.start_mark) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:null', + SafeConstructor.construct_yaml_null) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:bool', + SafeConstructor.construct_yaml_bool) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:int', + SafeConstructor.construct_yaml_int) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:float', + SafeConstructor.construct_yaml_float) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:binary', + SafeConstructor.construct_yaml_binary) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:timestamp', + SafeConstructor.construct_yaml_timestamp) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:omap', + SafeConstructor.construct_yaml_omap) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:pairs', + SafeConstructor.construct_yaml_pairs) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:set', + SafeConstructor.construct_yaml_set) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:str', + SafeConstructor.construct_yaml_str) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:seq', + SafeConstructor.construct_yaml_seq) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:map', + SafeConstructor.construct_yaml_map) + +SafeConstructor.add_constructor(None, + SafeConstructor.construct_undefined) + +class FullConstructor(SafeConstructor): + # 'extend' is blacklisted because it is used by + # construct_python_object_apply to add `listitems` to a newly generate + # python instance + def get_state_keys_blacklist(self): + return ['^extend$', '^__.*__$'] + + def get_state_keys_blacklist_regexp(self): + if not hasattr(self, 'state_keys_blacklist_regexp'): + self.state_keys_blacklist_regexp = re.compile('(' + '|'.join(self.get_state_keys_blacklist()) + ')') + return self.state_keys_blacklist_regexp + + def construct_python_str(self, node): + return self.construct_scalar(node) + + def construct_python_unicode(self, node): + return self.construct_scalar(node) + + def construct_python_bytes(self, node): + try: + value = self.construct_scalar(node).encode('ascii') + except UnicodeEncodeError as exc: + raise ConstructorError(None, None, + "failed to convert base64 data into ascii: %s" % exc, + node.start_mark) + try: + if hasattr(base64, 'decodebytes'): + return base64.decodebytes(value) + else: + return base64.decodestring(value) + except binascii.Error as exc: + raise ConstructorError(None, None, + "failed to decode base64 data: %s" % exc, node.start_mark) + + def construct_python_long(self, node): + return self.construct_yaml_int(node) + + def construct_python_complex(self, node): + return complex(self.construct_scalar(node)) + + def construct_python_tuple(self, node): + return tuple(self.construct_sequence(node)) + + def find_python_module(self, name, mark, unsafe=False): + if not name: + raise ConstructorError("while constructing a Python module", mark, + "expected non-empty name appended to the tag", mark) + if unsafe: + try: + __import__(name) + except ImportError as exc: + raise ConstructorError("while constructing a Python module", mark, + "cannot find module %r (%s)" % (name, exc), mark) + if name not in sys.modules: + raise ConstructorError("while constructing a Python module", mark, + "module %r is not imported" % name, mark) + return sys.modules[name] + + def find_python_name(self, name, mark, unsafe=False): + if not name: + raise ConstructorError("while constructing a Python object", mark, + "expected non-empty name appended to the tag", mark) + if '.' in name: + module_name, object_name = name.rsplit('.', 1) + else: + module_name = 'builtins' + object_name = name + if unsafe: + try: + __import__(module_name) + except ImportError as exc: + raise ConstructorError("while constructing a Python object", mark, + "cannot find module %r (%s)" % (module_name, exc), mark) + if module_name not in sys.modules: + raise ConstructorError("while constructing a Python object", mark, + "module %r is not imported" % module_name, mark) + module = sys.modules[module_name] + if not hasattr(module, object_name): + raise ConstructorError("while constructing a Python object", mark, + "cannot find %r in the module %r" + % (object_name, module.__name__), mark) + return getattr(module, object_name) + + def construct_python_name(self, suffix, node): + value = self.construct_scalar(node) + if value: + raise ConstructorError("while constructing a Python name", node.start_mark, + "expected the empty value, but found %r" % value, node.start_mark) + return self.find_python_name(suffix, node.start_mark) + + def construct_python_module(self, suffix, node): + value = self.construct_scalar(node) + if value: + raise ConstructorError("while constructing a Python module", node.start_mark, + "expected the empty value, but found %r" % value, node.start_mark) + return self.find_python_module(suffix, node.start_mark) + + def make_python_instance(self, suffix, node, + args=None, kwds=None, newobj=False, unsafe=False): + if not args: + args = [] + if not kwds: + kwds = {} + cls = self.find_python_name(suffix, node.start_mark) + if not (unsafe or isinstance(cls, type)): + raise ConstructorError("while constructing a Python instance", node.start_mark, + "expected a class, but found %r" % type(cls), + node.start_mark) + if newobj and isinstance(cls, type): + return cls.__new__(cls, *args, **kwds) + else: + return cls(*args, **kwds) + + def set_python_instance_state(self, instance, state, unsafe=False): + if hasattr(instance, '__setstate__'): + instance.__setstate__(state) + else: + slotstate = {} + if isinstance(state, tuple) and len(state) == 2: + state, slotstate = state + if hasattr(instance, '__dict__'): + if not unsafe and state: + for key in state.keys(): + self.check_state_key(key) + instance.__dict__.update(state) + elif state: + slotstate.update(state) + for key, value in slotstate.items(): + if not unsafe: + self.check_state_key(key) + setattr(instance, key, value) + + def construct_python_object(self, suffix, node): + # Format: + # !!python/object:module.name { ... state ... } + instance = self.make_python_instance(suffix, node, newobj=True) + yield instance + deep = hasattr(instance, '__setstate__') + state = self.construct_mapping(node, deep=deep) + self.set_python_instance_state(instance, state) + + def construct_python_object_apply(self, suffix, node, newobj=False): + # Format: + # !!python/object/apply # (or !!python/object/new) + # args: [ ... arguments ... ] + # kwds: { ... keywords ... } + # state: ... state ... + # listitems: [ ... listitems ... ] + # dictitems: { ... dictitems ... } + # or short format: + # !!python/object/apply [ ... arguments ... ] + # The difference between !!python/object/apply and !!python/object/new + # is how an object is created, check make_python_instance for details. + if isinstance(node, SequenceNode): + args = self.construct_sequence(node, deep=True) + kwds = {} + state = {} + listitems = [] + dictitems = {} + else: + value = self.construct_mapping(node, deep=True) + args = value.get('args', []) + kwds = value.get('kwds', {}) + state = value.get('state', {}) + listitems = value.get('listitems', []) + dictitems = value.get('dictitems', {}) + instance = self.make_python_instance(suffix, node, args, kwds, newobj) + if state: + self.set_python_instance_state(instance, state) + if listitems: + instance.extend(listitems) + if dictitems: + for key in dictitems: + instance[key] = dictitems[key] + return instance + + def construct_python_object_new(self, suffix, node): + return self.construct_python_object_apply(suffix, node, newobj=True) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/none', + FullConstructor.construct_yaml_null) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/bool', + FullConstructor.construct_yaml_bool) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/str', + FullConstructor.construct_python_str) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/unicode', + FullConstructor.construct_python_unicode) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/bytes', + FullConstructor.construct_python_bytes) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/int', + FullConstructor.construct_yaml_int) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/long', + FullConstructor.construct_python_long) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/float', + FullConstructor.construct_yaml_float) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/complex', + FullConstructor.construct_python_complex) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/list', + FullConstructor.construct_yaml_seq) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/tuple', + FullConstructor.construct_python_tuple) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/dict', + FullConstructor.construct_yaml_map) + +FullConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/name:', + FullConstructor.construct_python_name) + +class UnsafeConstructor(FullConstructor): + + def find_python_module(self, name, mark): + return super(UnsafeConstructor, self).find_python_module(name, mark, unsafe=True) + + def find_python_name(self, name, mark): + return super(UnsafeConstructor, self).find_python_name(name, mark, unsafe=True) + + def make_python_instance(self, suffix, node, args=None, kwds=None, newobj=False): + return super(UnsafeConstructor, self).make_python_instance( + suffix, node, args, kwds, newobj, unsafe=True) + + def set_python_instance_state(self, instance, state): + return super(UnsafeConstructor, self).set_python_instance_state( + instance, state, unsafe=True) + +UnsafeConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/module:', + UnsafeConstructor.construct_python_module) + +UnsafeConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/object:', + UnsafeConstructor.construct_python_object) + +UnsafeConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/object/new:', + UnsafeConstructor.construct_python_object_new) + +UnsafeConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/object/apply:', + UnsafeConstructor.construct_python_object_apply) + +# Constructor is same as UnsafeConstructor. Need to leave this in place in case +# people have extended it directly. +class Constructor(UnsafeConstructor): + pass diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/cyaml.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/cyaml.py new file mode 100644 index 00000000..0c213458 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/cyaml.py @@ -0,0 +1,101 @@ + +__all__ = [ + 'CBaseLoader', 'CSafeLoader', 'CFullLoader', 'CUnsafeLoader', 'CLoader', + 'CBaseDumper', 'CSafeDumper', 'CDumper' +] + +from yaml._yaml import CParser, CEmitter + +from .constructor import * + +from .serializer import * +from .representer import * + +from .resolver import * + +class CBaseLoader(CParser, BaseConstructor, BaseResolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + BaseConstructor.__init__(self) + BaseResolver.__init__(self) + +class CSafeLoader(CParser, SafeConstructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + SafeConstructor.__init__(self) + Resolver.__init__(self) + +class CFullLoader(CParser, FullConstructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + FullConstructor.__init__(self) + Resolver.__init__(self) + +class CUnsafeLoader(CParser, UnsafeConstructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + UnsafeConstructor.__init__(self) + Resolver.__init__(self) + +class CLoader(CParser, Constructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + Constructor.__init__(self) + Resolver.__init__(self) + +class CBaseDumper(CEmitter, BaseRepresenter, BaseResolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + +class CSafeDumper(CEmitter, SafeRepresenter, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + SafeRepresenter.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + +class CDumper(CEmitter, Serializer, Representer, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/dumper.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/dumper.py new file mode 100644 index 00000000..6aadba55 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/dumper.py @@ -0,0 +1,62 @@ + +__all__ = ['BaseDumper', 'SafeDumper', 'Dumper'] + +from .emitter import * +from .serializer import * +from .representer import * +from .resolver import * + +class BaseDumper(Emitter, Serializer, BaseRepresenter, BaseResolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + Emitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + Serializer.__init__(self, encoding=encoding, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + +class SafeDumper(Emitter, Serializer, SafeRepresenter, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + Emitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + Serializer.__init__(self, encoding=encoding, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + SafeRepresenter.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + +class Dumper(Emitter, Serializer, Representer, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + Emitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + Serializer.__init__(self, encoding=encoding, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/emitter.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/emitter.py new file mode 100644 index 00000000..a664d011 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/emitter.py @@ -0,0 +1,1137 @@ + +# Emitter expects events obeying the following grammar: +# stream ::= STREAM-START document* STREAM-END +# document ::= DOCUMENT-START node DOCUMENT-END +# node ::= SCALAR | sequence | mapping +# sequence ::= SEQUENCE-START node* SEQUENCE-END +# mapping ::= MAPPING-START (node node)* MAPPING-END + +__all__ = ['Emitter', 'EmitterError'] + +from .error import YAMLError +from .events import * + +class EmitterError(YAMLError): + pass + +class ScalarAnalysis: + def __init__(self, scalar, empty, multiline, + allow_flow_plain, allow_block_plain, + allow_single_quoted, allow_double_quoted, + allow_block): + self.scalar = scalar + self.empty = empty + self.multiline = multiline + self.allow_flow_plain = allow_flow_plain + self.allow_block_plain = allow_block_plain + self.allow_single_quoted = allow_single_quoted + self.allow_double_quoted = allow_double_quoted + self.allow_block = allow_block + +class Emitter: + + DEFAULT_TAG_PREFIXES = { + '!' : '!', + 'tag:yaml.org,2002:' : '!!', + } + + def __init__(self, stream, canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None): + + # The stream should have the methods `write` and possibly `flush`. + self.stream = stream + + # Encoding can be overridden by STREAM-START. + self.encoding = None + + # Emitter is a state machine with a stack of states to handle nested + # structures. + self.states = [] + self.state = self.expect_stream_start + + # Current event and the event queue. + self.events = [] + self.event = None + + # The current indentation level and the stack of previous indents. + self.indents = [] + self.indent = None + + # Flow level. + self.flow_level = 0 + + # Contexts. + self.root_context = False + self.sequence_context = False + self.mapping_context = False + self.simple_key_context = False + + # Characteristics of the last emitted character: + # - current position. + # - is it a whitespace? + # - is it an indention character + # (indentation space, '-', '?', or ':')? + self.line = 0 + self.column = 0 + self.whitespace = True + self.indention = True + + # Whether the document requires an explicit document indicator + self.open_ended = False + + # Formatting details. + self.canonical = canonical + self.allow_unicode = allow_unicode + self.best_indent = 2 + if indent and 1 < indent < 10: + self.best_indent = indent + self.best_width = 80 + if width and width > self.best_indent*2: + self.best_width = width + self.best_line_break = '\n' + if line_break in ['\r', '\n', '\r\n']: + self.best_line_break = line_break + + # Tag prefixes. + self.tag_prefixes = None + + # Prepared anchor and tag. + self.prepared_anchor = None + self.prepared_tag = None + + # Scalar analysis and style. + self.analysis = None + self.style = None + + def dispose(self): + # Reset the state attributes (to clear self-references) + self.states = [] + self.state = None + + def emit(self, event): + self.events.append(event) + while not self.need_more_events(): + self.event = self.events.pop(0) + self.state() + self.event = None + + # In some cases, we wait for a few next events before emitting. + + def need_more_events(self): + if not self.events: + return True + event = self.events[0] + if isinstance(event, DocumentStartEvent): + return self.need_events(1) + elif isinstance(event, SequenceStartEvent): + return self.need_events(2) + elif isinstance(event, MappingStartEvent): + return self.need_events(3) + else: + return False + + def need_events(self, count): + level = 0 + for event in self.events[1:]: + if isinstance(event, (DocumentStartEvent, CollectionStartEvent)): + level += 1 + elif isinstance(event, (DocumentEndEvent, CollectionEndEvent)): + level -= 1 + elif isinstance(event, StreamEndEvent): + level = -1 + if level < 0: + return False + return (len(self.events) < count+1) + + def increase_indent(self, flow=False, indentless=False): + self.indents.append(self.indent) + if self.indent is None: + if flow: + self.indent = self.best_indent + else: + self.indent = 0 + elif not indentless: + self.indent += self.best_indent + + # States. + + # Stream handlers. + + def expect_stream_start(self): + if isinstance(self.event, StreamStartEvent): + if self.event.encoding and not hasattr(self.stream, 'encoding'): + self.encoding = self.event.encoding + self.write_stream_start() + self.state = self.expect_first_document_start + else: + raise EmitterError("expected StreamStartEvent, but got %s" + % self.event) + + def expect_nothing(self): + raise EmitterError("expected nothing, but got %s" % self.event) + + # Document handlers. + + def expect_first_document_start(self): + return self.expect_document_start(first=True) + + def expect_document_start(self, first=False): + if isinstance(self.event, DocumentStartEvent): + if (self.event.version or self.event.tags) and self.open_ended: + self.write_indicator('...', True) + self.write_indent() + if self.event.version: + version_text = self.prepare_version(self.event.version) + self.write_version_directive(version_text) + self.tag_prefixes = self.DEFAULT_TAG_PREFIXES.copy() + if self.event.tags: + handles = sorted(self.event.tags.keys()) + for handle in handles: + prefix = self.event.tags[handle] + self.tag_prefixes[prefix] = handle + handle_text = self.prepare_tag_handle(handle) + prefix_text = self.prepare_tag_prefix(prefix) + self.write_tag_directive(handle_text, prefix_text) + implicit = (first and not self.event.explicit and not self.canonical + and not self.event.version and not self.event.tags + and not self.check_empty_document()) + if not implicit: + self.write_indent() + self.write_indicator('---', True) + if self.canonical: + self.write_indent() + self.state = self.expect_document_root + elif isinstance(self.event, StreamEndEvent): + if self.open_ended: + self.write_indicator('...', True) + self.write_indent() + self.write_stream_end() + self.state = self.expect_nothing + else: + raise EmitterError("expected DocumentStartEvent, but got %s" + % self.event) + + def expect_document_end(self): + if isinstance(self.event, DocumentEndEvent): + self.write_indent() + if self.event.explicit: + self.write_indicator('...', True) + self.write_indent() + self.flush_stream() + self.state = self.expect_document_start + else: + raise EmitterError("expected DocumentEndEvent, but got %s" + % self.event) + + def expect_document_root(self): + self.states.append(self.expect_document_end) + self.expect_node(root=True) + + # Node handlers. + + def expect_node(self, root=False, sequence=False, mapping=False, + simple_key=False): + self.root_context = root + self.sequence_context = sequence + self.mapping_context = mapping + self.simple_key_context = simple_key + if isinstance(self.event, AliasEvent): + self.expect_alias() + elif isinstance(self.event, (ScalarEvent, CollectionStartEvent)): + self.process_anchor('&') + self.process_tag() + if isinstance(self.event, ScalarEvent): + self.expect_scalar() + elif isinstance(self.event, SequenceStartEvent): + if self.flow_level or self.canonical or self.event.flow_style \ + or self.check_empty_sequence(): + self.expect_flow_sequence() + else: + self.expect_block_sequence() + elif isinstance(self.event, MappingStartEvent): + if self.flow_level or self.canonical or self.event.flow_style \ + or self.check_empty_mapping(): + self.expect_flow_mapping() + else: + self.expect_block_mapping() + else: + raise EmitterError("expected NodeEvent, but got %s" % self.event) + + def expect_alias(self): + if self.event.anchor is None: + raise EmitterError("anchor is not specified for alias") + self.process_anchor('*') + self.state = self.states.pop() + + def expect_scalar(self): + self.increase_indent(flow=True) + self.process_scalar() + self.indent = self.indents.pop() + self.state = self.states.pop() + + # Flow sequence handlers. + + def expect_flow_sequence(self): + self.write_indicator('[', True, whitespace=True) + self.flow_level += 1 + self.increase_indent(flow=True) + self.state = self.expect_first_flow_sequence_item + + def expect_first_flow_sequence_item(self): + if isinstance(self.event, SequenceEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + self.write_indicator(']', False) + self.state = self.states.pop() + else: + if self.canonical or self.column > self.best_width: + self.write_indent() + self.states.append(self.expect_flow_sequence_item) + self.expect_node(sequence=True) + + def expect_flow_sequence_item(self): + if isinstance(self.event, SequenceEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + if self.canonical: + self.write_indicator(',', False) + self.write_indent() + self.write_indicator(']', False) + self.state = self.states.pop() + else: + self.write_indicator(',', False) + if self.canonical or self.column > self.best_width: + self.write_indent() + self.states.append(self.expect_flow_sequence_item) + self.expect_node(sequence=True) + + # Flow mapping handlers. + + def expect_flow_mapping(self): + self.write_indicator('{', True, whitespace=True) + self.flow_level += 1 + self.increase_indent(flow=True) + self.state = self.expect_first_flow_mapping_key + + def expect_first_flow_mapping_key(self): + if isinstance(self.event, MappingEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + self.write_indicator('}', False) + self.state = self.states.pop() + else: + if self.canonical or self.column > self.best_width: + self.write_indent() + if not self.canonical and self.check_simple_key(): + self.states.append(self.expect_flow_mapping_simple_value) + self.expect_node(mapping=True, simple_key=True) + else: + self.write_indicator('?', True) + self.states.append(self.expect_flow_mapping_value) + self.expect_node(mapping=True) + + def expect_flow_mapping_key(self): + if isinstance(self.event, MappingEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + if self.canonical: + self.write_indicator(',', False) + self.write_indent() + self.write_indicator('}', False) + self.state = self.states.pop() + else: + self.write_indicator(',', False) + if self.canonical or self.column > self.best_width: + self.write_indent() + if not self.canonical and self.check_simple_key(): + self.states.append(self.expect_flow_mapping_simple_value) + self.expect_node(mapping=True, simple_key=True) + else: + self.write_indicator('?', True) + self.states.append(self.expect_flow_mapping_value) + self.expect_node(mapping=True) + + def expect_flow_mapping_simple_value(self): + self.write_indicator(':', False) + self.states.append(self.expect_flow_mapping_key) + self.expect_node(mapping=True) + + def expect_flow_mapping_value(self): + if self.canonical or self.column > self.best_width: + self.write_indent() + self.write_indicator(':', True) + self.states.append(self.expect_flow_mapping_key) + self.expect_node(mapping=True) + + # Block sequence handlers. + + def expect_block_sequence(self): + indentless = (self.mapping_context and not self.indention) + self.increase_indent(flow=False, indentless=indentless) + self.state = self.expect_first_block_sequence_item + + def expect_first_block_sequence_item(self): + return self.expect_block_sequence_item(first=True) + + def expect_block_sequence_item(self, first=False): + if not first and isinstance(self.event, SequenceEndEvent): + self.indent = self.indents.pop() + self.state = self.states.pop() + else: + self.write_indent() + self.write_indicator('-', True, indention=True) + self.states.append(self.expect_block_sequence_item) + self.expect_node(sequence=True) + + # Block mapping handlers. + + def expect_block_mapping(self): + self.increase_indent(flow=False) + self.state = self.expect_first_block_mapping_key + + def expect_first_block_mapping_key(self): + return self.expect_block_mapping_key(first=True) + + def expect_block_mapping_key(self, first=False): + if not first and isinstance(self.event, MappingEndEvent): + self.indent = self.indents.pop() + self.state = self.states.pop() + else: + self.write_indent() + if self.check_simple_key(): + self.states.append(self.expect_block_mapping_simple_value) + self.expect_node(mapping=True, simple_key=True) + else: + self.write_indicator('?', True, indention=True) + self.states.append(self.expect_block_mapping_value) + self.expect_node(mapping=True) + + def expect_block_mapping_simple_value(self): + self.write_indicator(':', False) + self.states.append(self.expect_block_mapping_key) + self.expect_node(mapping=True) + + def expect_block_mapping_value(self): + self.write_indent() + self.write_indicator(':', True, indention=True) + self.states.append(self.expect_block_mapping_key) + self.expect_node(mapping=True) + + # Checkers. + + def check_empty_sequence(self): + return (isinstance(self.event, SequenceStartEvent) and self.events + and isinstance(self.events[0], SequenceEndEvent)) + + def check_empty_mapping(self): + return (isinstance(self.event, MappingStartEvent) and self.events + and isinstance(self.events[0], MappingEndEvent)) + + def check_empty_document(self): + if not isinstance(self.event, DocumentStartEvent) or not self.events: + return False + event = self.events[0] + return (isinstance(event, ScalarEvent) and event.anchor is None + and event.tag is None and event.implicit and event.value == '') + + def check_simple_key(self): + length = 0 + if isinstance(self.event, NodeEvent) and self.event.anchor is not None: + if self.prepared_anchor is None: + self.prepared_anchor = self.prepare_anchor(self.event.anchor) + length += len(self.prepared_anchor) + if isinstance(self.event, (ScalarEvent, CollectionStartEvent)) \ + and self.event.tag is not None: + if self.prepared_tag is None: + self.prepared_tag = self.prepare_tag(self.event.tag) + length += len(self.prepared_tag) + if isinstance(self.event, ScalarEvent): + if self.analysis is None: + self.analysis = self.analyze_scalar(self.event.value) + length += len(self.analysis.scalar) + return (length < 128 and (isinstance(self.event, AliasEvent) + or (isinstance(self.event, ScalarEvent) + and not self.analysis.empty and not self.analysis.multiline) + or self.check_empty_sequence() or self.check_empty_mapping())) + + # Anchor, Tag, and Scalar processors. + + def process_anchor(self, indicator): + if self.event.anchor is None: + self.prepared_anchor = None + return + if self.prepared_anchor is None: + self.prepared_anchor = self.prepare_anchor(self.event.anchor) + if self.prepared_anchor: + self.write_indicator(indicator+self.prepared_anchor, True) + self.prepared_anchor = None + + def process_tag(self): + tag = self.event.tag + if isinstance(self.event, ScalarEvent): + if self.style is None: + self.style = self.choose_scalar_style() + if ((not self.canonical or tag is None) and + ((self.style == '' and self.event.implicit[0]) + or (self.style != '' and self.event.implicit[1]))): + self.prepared_tag = None + return + if self.event.implicit[0] and tag is None: + tag = '!' + self.prepared_tag = None + else: + if (not self.canonical or tag is None) and self.event.implicit: + self.prepared_tag = None + return + if tag is None: + raise EmitterError("tag is not specified") + if self.prepared_tag is None: + self.prepared_tag = self.prepare_tag(tag) + if self.prepared_tag: + self.write_indicator(self.prepared_tag, True) + self.prepared_tag = None + + def choose_scalar_style(self): + if self.analysis is None: + self.analysis = self.analyze_scalar(self.event.value) + if self.event.style == '"' or self.canonical: + return '"' + if not self.event.style and self.event.implicit[0]: + if (not (self.simple_key_context and + (self.analysis.empty or self.analysis.multiline)) + and (self.flow_level and self.analysis.allow_flow_plain + or (not self.flow_level and self.analysis.allow_block_plain))): + return '' + if self.event.style and self.event.style in '|>': + if (not self.flow_level and not self.simple_key_context + and self.analysis.allow_block): + return self.event.style + if not self.event.style or self.event.style == '\'': + if (self.analysis.allow_single_quoted and + not (self.simple_key_context and self.analysis.multiline)): + return '\'' + return '"' + + def process_scalar(self): + if self.analysis is None: + self.analysis = self.analyze_scalar(self.event.value) + if self.style is None: + self.style = self.choose_scalar_style() + split = (not self.simple_key_context) + #if self.analysis.multiline and split \ + # and (not self.style or self.style in '\'\"'): + # self.write_indent() + if self.style == '"': + self.write_double_quoted(self.analysis.scalar, split) + elif self.style == '\'': + self.write_single_quoted(self.analysis.scalar, split) + elif self.style == '>': + self.write_folded(self.analysis.scalar) + elif self.style == '|': + self.write_literal(self.analysis.scalar) + else: + self.write_plain(self.analysis.scalar, split) + self.analysis = None + self.style = None + + # Analyzers. + + def prepare_version(self, version): + major, minor = version + if major != 1: + raise EmitterError("unsupported YAML version: %d.%d" % (major, minor)) + return '%d.%d' % (major, minor) + + def prepare_tag_handle(self, handle): + if not handle: + raise EmitterError("tag handle must not be empty") + if handle[0] != '!' or handle[-1] != '!': + raise EmitterError("tag handle must start and end with '!': %r" % handle) + for ch in handle[1:-1]: + if not ('0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_'): + raise EmitterError("invalid character %r in the tag handle: %r" + % (ch, handle)) + return handle + + def prepare_tag_prefix(self, prefix): + if not prefix: + raise EmitterError("tag prefix must not be empty") + chunks = [] + start = end = 0 + if prefix[0] == '!': + end = 1 + while end < len(prefix): + ch = prefix[end] + if '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-;/?!:@&=+$,_.~*\'()[]': + end += 1 + else: + if start < end: + chunks.append(prefix[start:end]) + start = end = end+1 + data = ch.encode('utf-8') + for ch in data: + chunks.append('%%%02X' % ord(ch)) + if start < end: + chunks.append(prefix[start:end]) + return ''.join(chunks) + + def prepare_tag(self, tag): + if not tag: + raise EmitterError("tag must not be empty") + if tag == '!': + return tag + handle = None + suffix = tag + prefixes = sorted(self.tag_prefixes.keys()) + for prefix in prefixes: + if tag.startswith(prefix) \ + and (prefix == '!' or len(prefix) < len(tag)): + handle = self.tag_prefixes[prefix] + suffix = tag[len(prefix):] + chunks = [] + start = end = 0 + while end < len(suffix): + ch = suffix[end] + if '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-;/?:@&=+$,_.~*\'()[]' \ + or (ch == '!' and handle != '!'): + end += 1 + else: + if start < end: + chunks.append(suffix[start:end]) + start = end = end+1 + data = ch.encode('utf-8') + for ch in data: + chunks.append('%%%02X' % ch) + if start < end: + chunks.append(suffix[start:end]) + suffix_text = ''.join(chunks) + if handle: + return '%s%s' % (handle, suffix_text) + else: + return '!<%s>' % suffix_text + + def prepare_anchor(self, anchor): + if not anchor: + raise EmitterError("anchor must not be empty") + for ch in anchor: + if not ('0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_'): + raise EmitterError("invalid character %r in the anchor: %r" + % (ch, anchor)) + return anchor + + def analyze_scalar(self, scalar): + + # Empty scalar is a special case. + if not scalar: + return ScalarAnalysis(scalar=scalar, empty=True, multiline=False, + allow_flow_plain=False, allow_block_plain=True, + allow_single_quoted=True, allow_double_quoted=True, + allow_block=False) + + # Indicators and special characters. + block_indicators = False + flow_indicators = False + line_breaks = False + special_characters = False + + # Important whitespace combinations. + leading_space = False + leading_break = False + trailing_space = False + trailing_break = False + break_space = False + space_break = False + + # Check document indicators. + if scalar.startswith('---') or scalar.startswith('...'): + block_indicators = True + flow_indicators = True + + # First character or preceded by a whitespace. + preceded_by_whitespace = True + + # Last character or followed by a whitespace. + followed_by_whitespace = (len(scalar) == 1 or + scalar[1] in '\0 \t\r\n\x85\u2028\u2029') + + # The previous character is a space. + previous_space = False + + # The previous character is a break. + previous_break = False + + index = 0 + while index < len(scalar): + ch = scalar[index] + + # Check for indicators. + if index == 0: + # Leading indicators are special characters. + if ch in '#,[]{}&*!|>\'\"%@`': + flow_indicators = True + block_indicators = True + if ch in '?:': + flow_indicators = True + if followed_by_whitespace: + block_indicators = True + if ch == '-' and followed_by_whitespace: + flow_indicators = True + block_indicators = True + else: + # Some indicators cannot appear within a scalar as well. + if ch in ',?[]{}': + flow_indicators = True + if ch == ':': + flow_indicators = True + if followed_by_whitespace: + block_indicators = True + if ch == '#' and preceded_by_whitespace: + flow_indicators = True + block_indicators = True + + # Check for line breaks, special, and unicode characters. + if ch in '\n\x85\u2028\u2029': + line_breaks = True + if not (ch == '\n' or '\x20' <= ch <= '\x7E'): + if (ch == '\x85' or '\xA0' <= ch <= '\uD7FF' + or '\uE000' <= ch <= '\uFFFD' + or '\U00010000' <= ch < '\U0010ffff') and ch != '\uFEFF': + unicode_characters = True + if not self.allow_unicode: + special_characters = True + else: + special_characters = True + + # Detect important whitespace combinations. + if ch == ' ': + if index == 0: + leading_space = True + if index == len(scalar)-1: + trailing_space = True + if previous_break: + break_space = True + previous_space = True + previous_break = False + elif ch in '\n\x85\u2028\u2029': + if index == 0: + leading_break = True + if index == len(scalar)-1: + trailing_break = True + if previous_space: + space_break = True + previous_space = False + previous_break = True + else: + previous_space = False + previous_break = False + + # Prepare for the next character. + index += 1 + preceded_by_whitespace = (ch in '\0 \t\r\n\x85\u2028\u2029') + followed_by_whitespace = (index+1 >= len(scalar) or + scalar[index+1] in '\0 \t\r\n\x85\u2028\u2029') + + # Let's decide what styles are allowed. + allow_flow_plain = True + allow_block_plain = True + allow_single_quoted = True + allow_double_quoted = True + allow_block = True + + # Leading and trailing whitespaces are bad for plain scalars. + if (leading_space or leading_break + or trailing_space or trailing_break): + allow_flow_plain = allow_block_plain = False + + # We do not permit trailing spaces for block scalars. + if trailing_space: + allow_block = False + + # Spaces at the beginning of a new line are only acceptable for block + # scalars. + if break_space: + allow_flow_plain = allow_block_plain = allow_single_quoted = False + + # Spaces followed by breaks, as well as special character are only + # allowed for double quoted scalars. + if space_break or special_characters: + allow_flow_plain = allow_block_plain = \ + allow_single_quoted = allow_block = False + + # Although the plain scalar writer supports breaks, we never emit + # multiline plain scalars. + if line_breaks: + allow_flow_plain = allow_block_plain = False + + # Flow indicators are forbidden for flow plain scalars. + if flow_indicators: + allow_flow_plain = False + + # Block indicators are forbidden for block plain scalars. + if block_indicators: + allow_block_plain = False + + return ScalarAnalysis(scalar=scalar, + empty=False, multiline=line_breaks, + allow_flow_plain=allow_flow_plain, + allow_block_plain=allow_block_plain, + allow_single_quoted=allow_single_quoted, + allow_double_quoted=allow_double_quoted, + allow_block=allow_block) + + # Writers. + + def flush_stream(self): + if hasattr(self.stream, 'flush'): + self.stream.flush() + + def write_stream_start(self): + # Write BOM if needed. + if self.encoding and self.encoding.startswith('utf-16'): + self.stream.write('\uFEFF'.encode(self.encoding)) + + def write_stream_end(self): + self.flush_stream() + + def write_indicator(self, indicator, need_whitespace, + whitespace=False, indention=False): + if self.whitespace or not need_whitespace: + data = indicator + else: + data = ' '+indicator + self.whitespace = whitespace + self.indention = self.indention and indention + self.column += len(data) + self.open_ended = False + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + + def write_indent(self): + indent = self.indent or 0 + if not self.indention or self.column > indent \ + or (self.column == indent and not self.whitespace): + self.write_line_break() + if self.column < indent: + self.whitespace = True + data = ' '*(indent-self.column) + self.column = indent + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + + def write_line_break(self, data=None): + if data is None: + data = self.best_line_break + self.whitespace = True + self.indention = True + self.line += 1 + self.column = 0 + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + + def write_version_directive(self, version_text): + data = '%%YAML %s' % version_text + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.write_line_break() + + def write_tag_directive(self, handle_text, prefix_text): + data = '%%TAG %s %s' % (handle_text, prefix_text) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.write_line_break() + + # Scalar streams. + + def write_single_quoted(self, text, split=True): + self.write_indicator('\'', True) + spaces = False + breaks = False + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if spaces: + if ch is None or ch != ' ': + if start+1 == end and self.column > self.best_width and split \ + and start != 0 and end != len(text): + self.write_indent() + else: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + elif breaks: + if ch is None or ch not in '\n\x85\u2028\u2029': + if text[start] == '\n': + self.write_line_break() + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + self.write_indent() + start = end + else: + if ch is None or ch in ' \n\x85\u2028\u2029' or ch == '\'': + if start < end: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + if ch == '\'': + data = '\'\'' + self.column += 2 + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + 1 + if ch is not None: + spaces = (ch == ' ') + breaks = (ch in '\n\x85\u2028\u2029') + end += 1 + self.write_indicator('\'', False) + + ESCAPE_REPLACEMENTS = { + '\0': '0', + '\x07': 'a', + '\x08': 'b', + '\x09': 't', + '\x0A': 'n', + '\x0B': 'v', + '\x0C': 'f', + '\x0D': 'r', + '\x1B': 'e', + '\"': '\"', + '\\': '\\', + '\x85': 'N', + '\xA0': '_', + '\u2028': 'L', + '\u2029': 'P', + } + + def write_double_quoted(self, text, split=True): + self.write_indicator('"', True) + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if ch is None or ch in '"\\\x85\u2028\u2029\uFEFF' \ + or not ('\x20' <= ch <= '\x7E' + or (self.allow_unicode + and ('\xA0' <= ch <= '\uD7FF' + or '\uE000' <= ch <= '\uFFFD'))): + if start < end: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + if ch is not None: + if ch in self.ESCAPE_REPLACEMENTS: + data = '\\'+self.ESCAPE_REPLACEMENTS[ch] + elif ch <= '\xFF': + data = '\\x%02X' % ord(ch) + elif ch <= '\uFFFF': + data = '\\u%04X' % ord(ch) + else: + data = '\\U%08X' % ord(ch) + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end+1 + if 0 < end < len(text)-1 and (ch == ' ' or start >= end) \ + and self.column+(end-start) > self.best_width and split: + data = text[start:end]+'\\' + if start < end: + start = end + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.write_indent() + self.whitespace = False + self.indention = False + if text[start] == ' ': + data = '\\' + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + end += 1 + self.write_indicator('"', False) + + def determine_block_hints(self, text): + hints = '' + if text: + if text[0] in ' \n\x85\u2028\u2029': + hints += str(self.best_indent) + if text[-1] not in '\n\x85\u2028\u2029': + hints += '-' + elif len(text) == 1 or text[-2] in '\n\x85\u2028\u2029': + hints += '+' + return hints + + def write_folded(self, text): + hints = self.determine_block_hints(text) + self.write_indicator('>'+hints, True) + if hints[-1:] == '+': + self.open_ended = True + self.write_line_break() + leading_space = True + spaces = False + breaks = True + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if breaks: + if ch is None or ch not in '\n\x85\u2028\u2029': + if not leading_space and ch is not None and ch != ' ' \ + and text[start] == '\n': + self.write_line_break() + leading_space = (ch == ' ') + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + if ch is not None: + self.write_indent() + start = end + elif spaces: + if ch != ' ': + if start+1 == end and self.column > self.best_width: + self.write_indent() + else: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + else: + if ch is None or ch in ' \n\x85\u2028\u2029': + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + if ch is None: + self.write_line_break() + start = end + if ch is not None: + breaks = (ch in '\n\x85\u2028\u2029') + spaces = (ch == ' ') + end += 1 + + def write_literal(self, text): + hints = self.determine_block_hints(text) + self.write_indicator('|'+hints, True) + if hints[-1:] == '+': + self.open_ended = True + self.write_line_break() + breaks = True + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if breaks: + if ch is None or ch not in '\n\x85\u2028\u2029': + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + if ch is not None: + self.write_indent() + start = end + else: + if ch is None or ch in '\n\x85\u2028\u2029': + data = text[start:end] + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + if ch is None: + self.write_line_break() + start = end + if ch is not None: + breaks = (ch in '\n\x85\u2028\u2029') + end += 1 + + def write_plain(self, text, split=True): + if self.root_context: + self.open_ended = True + if not text: + return + if not self.whitespace: + data = ' ' + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.whitespace = False + self.indention = False + spaces = False + breaks = False + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if spaces: + if ch != ' ': + if start+1 == end and self.column > self.best_width and split: + self.write_indent() + self.whitespace = False + self.indention = False + else: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + elif breaks: + if ch not in '\n\x85\u2028\u2029': + if text[start] == '\n': + self.write_line_break() + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + self.write_indent() + self.whitespace = False + self.indention = False + start = end + else: + if ch is None or ch in ' \n\x85\u2028\u2029': + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + if ch is not None: + spaces = (ch == ' ') + breaks = (ch in '\n\x85\u2028\u2029') + end += 1 diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/error.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/error.py new file mode 100644 index 00000000..b796b4dc --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/error.py @@ -0,0 +1,75 @@ + +__all__ = ['Mark', 'YAMLError', 'MarkedYAMLError'] + +class Mark: + + def __init__(self, name, index, line, column, buffer, pointer): + self.name = name + self.index = index + self.line = line + self.column = column + self.buffer = buffer + self.pointer = pointer + + def get_snippet(self, indent=4, max_length=75): + if self.buffer is None: + return None + head = '' + start = self.pointer + while start > 0 and self.buffer[start-1] not in '\0\r\n\x85\u2028\u2029': + start -= 1 + if self.pointer-start > max_length/2-1: + head = ' ... ' + start += 5 + break + tail = '' + end = self.pointer + while end < len(self.buffer) and self.buffer[end] not in '\0\r\n\x85\u2028\u2029': + end += 1 + if end-self.pointer > max_length/2-1: + tail = ' ... ' + end -= 5 + break + snippet = self.buffer[start:end] + return ' '*indent + head + snippet + tail + '\n' \ + + ' '*(indent+self.pointer-start+len(head)) + '^' + + def __str__(self): + snippet = self.get_snippet() + where = " in \"%s\", line %d, column %d" \ + % (self.name, self.line+1, self.column+1) + if snippet is not None: + where += ":\n"+snippet + return where + +class YAMLError(Exception): + pass + +class MarkedYAMLError(YAMLError): + + def __init__(self, context=None, context_mark=None, + problem=None, problem_mark=None, note=None): + self.context = context + self.context_mark = context_mark + self.problem = problem + self.problem_mark = problem_mark + self.note = note + + def __str__(self): + lines = [] + if self.context is not None: + lines.append(self.context) + if self.context_mark is not None \ + and (self.problem is None or self.problem_mark is None + or self.context_mark.name != self.problem_mark.name + or self.context_mark.line != self.problem_mark.line + or self.context_mark.column != self.problem_mark.column): + lines.append(str(self.context_mark)) + if self.problem is not None: + lines.append(self.problem) + if self.problem_mark is not None: + lines.append(str(self.problem_mark)) + if self.note is not None: + lines.append(self.note) + return '\n'.join(lines) + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/events.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/events.py new file mode 100644 index 00000000..f79ad389 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/events.py @@ -0,0 +1,86 @@ + +# Abstract classes. + +class Event(object): + def __init__(self, start_mark=None, end_mark=None): + self.start_mark = start_mark + self.end_mark = end_mark + def __repr__(self): + attributes = [key for key in ['anchor', 'tag', 'implicit', 'value'] + if hasattr(self, key)] + arguments = ', '.join(['%s=%r' % (key, getattr(self, key)) + for key in attributes]) + return '%s(%s)' % (self.__class__.__name__, arguments) + +class NodeEvent(Event): + def __init__(self, anchor, start_mark=None, end_mark=None): + self.anchor = anchor + self.start_mark = start_mark + self.end_mark = end_mark + +class CollectionStartEvent(NodeEvent): + def __init__(self, anchor, tag, implicit, start_mark=None, end_mark=None, + flow_style=None): + self.anchor = anchor + self.tag = tag + self.implicit = implicit + self.start_mark = start_mark + self.end_mark = end_mark + self.flow_style = flow_style + +class CollectionEndEvent(Event): + pass + +# Implementations. + +class StreamStartEvent(Event): + def __init__(self, start_mark=None, end_mark=None, encoding=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.encoding = encoding + +class StreamEndEvent(Event): + pass + +class DocumentStartEvent(Event): + def __init__(self, start_mark=None, end_mark=None, + explicit=None, version=None, tags=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.explicit = explicit + self.version = version + self.tags = tags + +class DocumentEndEvent(Event): + def __init__(self, start_mark=None, end_mark=None, + explicit=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.explicit = explicit + +class AliasEvent(NodeEvent): + pass + +class ScalarEvent(NodeEvent): + def __init__(self, anchor, tag, implicit, value, + start_mark=None, end_mark=None, style=None): + self.anchor = anchor + self.tag = tag + self.implicit = implicit + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + self.style = style + +class SequenceStartEvent(CollectionStartEvent): + pass + +class SequenceEndEvent(CollectionEndEvent): + pass + +class MappingStartEvent(CollectionStartEvent): + pass + +class MappingEndEvent(CollectionEndEvent): + pass + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/loader.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/loader.py new file mode 100644 index 00000000..e90c1122 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/loader.py @@ -0,0 +1,63 @@ + +__all__ = ['BaseLoader', 'FullLoader', 'SafeLoader', 'Loader', 'UnsafeLoader'] + +from .reader import * +from .scanner import * +from .parser import * +from .composer import * +from .constructor import * +from .resolver import * + +class BaseLoader(Reader, Scanner, Parser, Composer, BaseConstructor, BaseResolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + BaseConstructor.__init__(self) + BaseResolver.__init__(self) + +class FullLoader(Reader, Scanner, Parser, Composer, FullConstructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + FullConstructor.__init__(self) + Resolver.__init__(self) + +class SafeLoader(Reader, Scanner, Parser, Composer, SafeConstructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + SafeConstructor.__init__(self) + Resolver.__init__(self) + +class Loader(Reader, Scanner, Parser, Composer, Constructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + Constructor.__init__(self) + Resolver.__init__(self) + +# UnsafeLoader is the same as Loader (which is and was always unsafe on +# untrusted input). Use of either Loader or UnsafeLoader should be rare, since +# FullLoad should be able to load almost all YAML safely. Loader is left intact +# to ensure backwards compatibility. +class UnsafeLoader(Reader, Scanner, Parser, Composer, Constructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + Constructor.__init__(self) + Resolver.__init__(self) diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/nodes.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/nodes.py new file mode 100644 index 00000000..c4f070c4 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/nodes.py @@ -0,0 +1,49 @@ + +class Node(object): + def __init__(self, tag, value, start_mark, end_mark): + self.tag = tag + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + def __repr__(self): + value = self.value + #if isinstance(value, list): + # if len(value) == 0: + # value = '<empty>' + # elif len(value) == 1: + # value = '<1 item>' + # else: + # value = '<%d items>' % len(value) + #else: + # if len(value) > 75: + # value = repr(value[:70]+u' ... ') + # else: + # value = repr(value) + value = repr(value) + return '%s(tag=%r, value=%s)' % (self.__class__.__name__, self.tag, value) + +class ScalarNode(Node): + id = 'scalar' + def __init__(self, tag, value, + start_mark=None, end_mark=None, style=None): + self.tag = tag + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + self.style = style + +class CollectionNode(Node): + def __init__(self, tag, value, + start_mark=None, end_mark=None, flow_style=None): + self.tag = tag + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + self.flow_style = flow_style + +class SequenceNode(CollectionNode): + id = 'sequence' + +class MappingNode(CollectionNode): + id = 'mapping' + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/parser.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/parser.py new file mode 100644 index 00000000..13a5995d --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/parser.py @@ -0,0 +1,589 @@ + +# The following YAML grammar is LL(1) and is parsed by a recursive descent +# parser. +# +# stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +# implicit_document ::= block_node DOCUMENT-END* +# explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +# block_node_or_indentless_sequence ::= +# ALIAS +# | properties (block_content | indentless_block_sequence)? +# | block_content +# | indentless_block_sequence +# block_node ::= ALIAS +# | properties block_content? +# | block_content +# flow_node ::= ALIAS +# | properties flow_content? +# | flow_content +# properties ::= TAG ANCHOR? | ANCHOR TAG? +# block_content ::= block_collection | flow_collection | SCALAR +# flow_content ::= flow_collection | SCALAR +# block_collection ::= block_sequence | block_mapping +# flow_collection ::= flow_sequence | flow_mapping +# block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +# indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +# block_mapping ::= BLOCK-MAPPING_START +# ((KEY block_node_or_indentless_sequence?)? +# (VALUE block_node_or_indentless_sequence?)?)* +# BLOCK-END +# flow_sequence ::= FLOW-SEQUENCE-START +# (flow_sequence_entry FLOW-ENTRY)* +# flow_sequence_entry? +# FLOW-SEQUENCE-END +# flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +# flow_mapping ::= FLOW-MAPPING-START +# (flow_mapping_entry FLOW-ENTRY)* +# flow_mapping_entry? +# FLOW-MAPPING-END +# flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +# +# FIRST sets: +# +# stream: { STREAM-START } +# explicit_document: { DIRECTIVE DOCUMENT-START } +# implicit_document: FIRST(block_node) +# block_node: { ALIAS TAG ANCHOR SCALAR BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START } +# flow_node: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START } +# block_content: { BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START SCALAR } +# flow_content: { FLOW-SEQUENCE-START FLOW-MAPPING-START SCALAR } +# block_collection: { BLOCK-SEQUENCE-START BLOCK-MAPPING-START } +# flow_collection: { FLOW-SEQUENCE-START FLOW-MAPPING-START } +# block_sequence: { BLOCK-SEQUENCE-START } +# block_mapping: { BLOCK-MAPPING-START } +# block_node_or_indentless_sequence: { ALIAS ANCHOR TAG SCALAR BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START BLOCK-ENTRY } +# indentless_sequence: { ENTRY } +# flow_collection: { FLOW-SEQUENCE-START FLOW-MAPPING-START } +# flow_sequence: { FLOW-SEQUENCE-START } +# flow_mapping: { FLOW-MAPPING-START } +# flow_sequence_entry: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START KEY } +# flow_mapping_entry: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START KEY } + +__all__ = ['Parser', 'ParserError'] + +from .error import MarkedYAMLError +from .tokens import * +from .events import * +from .scanner import * + +class ParserError(MarkedYAMLError): + pass + +class Parser: + # Since writing a recursive-descendant parser is a straightforward task, we + # do not give many comments here. + + DEFAULT_TAGS = { + '!': '!', + '!!': 'tag:yaml.org,2002:', + } + + def __init__(self): + self.current_event = None + self.yaml_version = None + self.tag_handles = {} + self.states = [] + self.marks = [] + self.state = self.parse_stream_start + + def dispose(self): + # Reset the state attributes (to clear self-references) + self.states = [] + self.state = None + + def check_event(self, *choices): + # Check the type of the next event. + if self.current_event is None: + if self.state: + self.current_event = self.state() + if self.current_event is not None: + if not choices: + return True + for choice in choices: + if isinstance(self.current_event, choice): + return True + return False + + def peek_event(self): + # Get the next event. + if self.current_event is None: + if self.state: + self.current_event = self.state() + return self.current_event + + def get_event(self): + # Get the next event and proceed further. + if self.current_event is None: + if self.state: + self.current_event = self.state() + value = self.current_event + self.current_event = None + return value + + # stream ::= STREAM-START implicit_document? explicit_document* STREAM-END + # implicit_document ::= block_node DOCUMENT-END* + # explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* + + def parse_stream_start(self): + + # Parse the stream start. + token = self.get_token() + event = StreamStartEvent(token.start_mark, token.end_mark, + encoding=token.encoding) + + # Prepare the next state. + self.state = self.parse_implicit_document_start + + return event + + def parse_implicit_document_start(self): + + # Parse an implicit document. + if not self.check_token(DirectiveToken, DocumentStartToken, + StreamEndToken): + self.tag_handles = self.DEFAULT_TAGS + token = self.peek_token() + start_mark = end_mark = token.start_mark + event = DocumentStartEvent(start_mark, end_mark, + explicit=False) + + # Prepare the next state. + self.states.append(self.parse_document_end) + self.state = self.parse_block_node + + return event + + else: + return self.parse_document_start() + + def parse_document_start(self): + + # Parse any extra document end indicators. + while self.check_token(DocumentEndToken): + self.get_token() + + # Parse an explicit document. + if not self.check_token(StreamEndToken): + token = self.peek_token() + start_mark = token.start_mark + version, tags = self.process_directives() + if not self.check_token(DocumentStartToken): + raise ParserError(None, None, + "expected '<document start>', but found %r" + % self.peek_token().id, + self.peek_token().start_mark) + token = self.get_token() + end_mark = token.end_mark + event = DocumentStartEvent(start_mark, end_mark, + explicit=True, version=version, tags=tags) + self.states.append(self.parse_document_end) + self.state = self.parse_document_content + else: + # Parse the end of the stream. + token = self.get_token() + event = StreamEndEvent(token.start_mark, token.end_mark) + assert not self.states + assert not self.marks + self.state = None + return event + + def parse_document_end(self): + + # Parse the document end. + token = self.peek_token() + start_mark = end_mark = token.start_mark + explicit = False + if self.check_token(DocumentEndToken): + token = self.get_token() + end_mark = token.end_mark + explicit = True + event = DocumentEndEvent(start_mark, end_mark, + explicit=explicit) + + # Prepare the next state. + self.state = self.parse_document_start + + return event + + def parse_document_content(self): + if self.check_token(DirectiveToken, + DocumentStartToken, DocumentEndToken, StreamEndToken): + event = self.process_empty_scalar(self.peek_token().start_mark) + self.state = self.states.pop() + return event + else: + return self.parse_block_node() + + def process_directives(self): + self.yaml_version = None + self.tag_handles = {} + while self.check_token(DirectiveToken): + token = self.get_token() + if token.name == 'YAML': + if self.yaml_version is not None: + raise ParserError(None, None, + "found duplicate YAML directive", token.start_mark) + major, minor = token.value + if major != 1: + raise ParserError(None, None, + "found incompatible YAML document (version 1.* is required)", + token.start_mark) + self.yaml_version = token.value + elif token.name == 'TAG': + handle, prefix = token.value + if handle in self.tag_handles: + raise ParserError(None, None, + "duplicate tag handle %r" % handle, + token.start_mark) + self.tag_handles[handle] = prefix + if self.tag_handles: + value = self.yaml_version, self.tag_handles.copy() + else: + value = self.yaml_version, None + for key in self.DEFAULT_TAGS: + if key not in self.tag_handles: + self.tag_handles[key] = self.DEFAULT_TAGS[key] + return value + + # block_node_or_indentless_sequence ::= ALIAS + # | properties (block_content | indentless_block_sequence)? + # | block_content + # | indentless_block_sequence + # block_node ::= ALIAS + # | properties block_content? + # | block_content + # flow_node ::= ALIAS + # | properties flow_content? + # | flow_content + # properties ::= TAG ANCHOR? | ANCHOR TAG? + # block_content ::= block_collection | flow_collection | SCALAR + # flow_content ::= flow_collection | SCALAR + # block_collection ::= block_sequence | block_mapping + # flow_collection ::= flow_sequence | flow_mapping + + def parse_block_node(self): + return self.parse_node(block=True) + + def parse_flow_node(self): + return self.parse_node() + + def parse_block_node_or_indentless_sequence(self): + return self.parse_node(block=True, indentless_sequence=True) + + def parse_node(self, block=False, indentless_sequence=False): + if self.check_token(AliasToken): + token = self.get_token() + event = AliasEvent(token.value, token.start_mark, token.end_mark) + self.state = self.states.pop() + else: + anchor = None + tag = None + start_mark = end_mark = tag_mark = None + if self.check_token(AnchorToken): + token = self.get_token() + start_mark = token.start_mark + end_mark = token.end_mark + anchor = token.value + if self.check_token(TagToken): + token = self.get_token() + tag_mark = token.start_mark + end_mark = token.end_mark + tag = token.value + elif self.check_token(TagToken): + token = self.get_token() + start_mark = tag_mark = token.start_mark + end_mark = token.end_mark + tag = token.value + if self.check_token(AnchorToken): + token = self.get_token() + end_mark = token.end_mark + anchor = token.value + if tag is not None: + handle, suffix = tag + if handle is not None: + if handle not in self.tag_handles: + raise ParserError("while parsing a node", start_mark, + "found undefined tag handle %r" % handle, + tag_mark) + tag = self.tag_handles[handle]+suffix + else: + tag = suffix + #if tag == '!': + # raise ParserError("while parsing a node", start_mark, + # "found non-specific tag '!'", tag_mark, + # "Please check 'http://pyyaml.org/wiki/YAMLNonSpecificTag' and share your opinion.") + if start_mark is None: + start_mark = end_mark = self.peek_token().start_mark + event = None + implicit = (tag is None or tag == '!') + if indentless_sequence and self.check_token(BlockEntryToken): + end_mark = self.peek_token().end_mark + event = SequenceStartEvent(anchor, tag, implicit, + start_mark, end_mark) + self.state = self.parse_indentless_sequence_entry + else: + if self.check_token(ScalarToken): + token = self.get_token() + end_mark = token.end_mark + if (token.plain and tag is None) or tag == '!': + implicit = (True, False) + elif tag is None: + implicit = (False, True) + else: + implicit = (False, False) + event = ScalarEvent(anchor, tag, implicit, token.value, + start_mark, end_mark, style=token.style) + self.state = self.states.pop() + elif self.check_token(FlowSequenceStartToken): + end_mark = self.peek_token().end_mark + event = SequenceStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=True) + self.state = self.parse_flow_sequence_first_entry + elif self.check_token(FlowMappingStartToken): + end_mark = self.peek_token().end_mark + event = MappingStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=True) + self.state = self.parse_flow_mapping_first_key + elif block and self.check_token(BlockSequenceStartToken): + end_mark = self.peek_token().start_mark + event = SequenceStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=False) + self.state = self.parse_block_sequence_first_entry + elif block and self.check_token(BlockMappingStartToken): + end_mark = self.peek_token().start_mark + event = MappingStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=False) + self.state = self.parse_block_mapping_first_key + elif anchor is not None or tag is not None: + # Empty scalars are allowed even if a tag or an anchor is + # specified. + event = ScalarEvent(anchor, tag, (implicit, False), '', + start_mark, end_mark) + self.state = self.states.pop() + else: + if block: + node = 'block' + else: + node = 'flow' + token = self.peek_token() + raise ParserError("while parsing a %s node" % node, start_mark, + "expected the node content, but found %r" % token.id, + token.start_mark) + return event + + # block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END + + def parse_block_sequence_first_entry(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_block_sequence_entry() + + def parse_block_sequence_entry(self): + if self.check_token(BlockEntryToken): + token = self.get_token() + if not self.check_token(BlockEntryToken, BlockEndToken): + self.states.append(self.parse_block_sequence_entry) + return self.parse_block_node() + else: + self.state = self.parse_block_sequence_entry + return self.process_empty_scalar(token.end_mark) + if not self.check_token(BlockEndToken): + token = self.peek_token() + raise ParserError("while parsing a block collection", self.marks[-1], + "expected <block end>, but found %r" % token.id, token.start_mark) + token = self.get_token() + event = SequenceEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + # indentless_sequence ::= (BLOCK-ENTRY block_node?)+ + + def parse_indentless_sequence_entry(self): + if self.check_token(BlockEntryToken): + token = self.get_token() + if not self.check_token(BlockEntryToken, + KeyToken, ValueToken, BlockEndToken): + self.states.append(self.parse_indentless_sequence_entry) + return self.parse_block_node() + else: + self.state = self.parse_indentless_sequence_entry + return self.process_empty_scalar(token.end_mark) + token = self.peek_token() + event = SequenceEndEvent(token.start_mark, token.start_mark) + self.state = self.states.pop() + return event + + # block_mapping ::= BLOCK-MAPPING_START + # ((KEY block_node_or_indentless_sequence?)? + # (VALUE block_node_or_indentless_sequence?)?)* + # BLOCK-END + + def parse_block_mapping_first_key(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_block_mapping_key() + + def parse_block_mapping_key(self): + if self.check_token(KeyToken): + token = self.get_token() + if not self.check_token(KeyToken, ValueToken, BlockEndToken): + self.states.append(self.parse_block_mapping_value) + return self.parse_block_node_or_indentless_sequence() + else: + self.state = self.parse_block_mapping_value + return self.process_empty_scalar(token.end_mark) + if not self.check_token(BlockEndToken): + token = self.peek_token() + raise ParserError("while parsing a block mapping", self.marks[-1], + "expected <block end>, but found %r" % token.id, token.start_mark) + token = self.get_token() + event = MappingEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + def parse_block_mapping_value(self): + if self.check_token(ValueToken): + token = self.get_token() + if not self.check_token(KeyToken, ValueToken, BlockEndToken): + self.states.append(self.parse_block_mapping_key) + return self.parse_block_node_or_indentless_sequence() + else: + self.state = self.parse_block_mapping_key + return self.process_empty_scalar(token.end_mark) + else: + self.state = self.parse_block_mapping_key + token = self.peek_token() + return self.process_empty_scalar(token.start_mark) + + # flow_sequence ::= FLOW-SEQUENCE-START + # (flow_sequence_entry FLOW-ENTRY)* + # flow_sequence_entry? + # FLOW-SEQUENCE-END + # flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? + # + # Note that while production rules for both flow_sequence_entry and + # flow_mapping_entry are equal, their interpretations are different. + # For `flow_sequence_entry`, the part `KEY flow_node? (VALUE flow_node?)?` + # generate an inline mapping (set syntax). + + def parse_flow_sequence_first_entry(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_flow_sequence_entry(first=True) + + def parse_flow_sequence_entry(self, first=False): + if not self.check_token(FlowSequenceEndToken): + if not first: + if self.check_token(FlowEntryToken): + self.get_token() + else: + token = self.peek_token() + raise ParserError("while parsing a flow sequence", self.marks[-1], + "expected ',' or ']', but got %r" % token.id, token.start_mark) + + if self.check_token(KeyToken): + token = self.peek_token() + event = MappingStartEvent(None, None, True, + token.start_mark, token.end_mark, + flow_style=True) + self.state = self.parse_flow_sequence_entry_mapping_key + return event + elif not self.check_token(FlowSequenceEndToken): + self.states.append(self.parse_flow_sequence_entry) + return self.parse_flow_node() + token = self.get_token() + event = SequenceEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + def parse_flow_sequence_entry_mapping_key(self): + token = self.get_token() + if not self.check_token(ValueToken, + FlowEntryToken, FlowSequenceEndToken): + self.states.append(self.parse_flow_sequence_entry_mapping_value) + return self.parse_flow_node() + else: + self.state = self.parse_flow_sequence_entry_mapping_value + return self.process_empty_scalar(token.end_mark) + + def parse_flow_sequence_entry_mapping_value(self): + if self.check_token(ValueToken): + token = self.get_token() + if not self.check_token(FlowEntryToken, FlowSequenceEndToken): + self.states.append(self.parse_flow_sequence_entry_mapping_end) + return self.parse_flow_node() + else: + self.state = self.parse_flow_sequence_entry_mapping_end + return self.process_empty_scalar(token.end_mark) + else: + self.state = self.parse_flow_sequence_entry_mapping_end + token = self.peek_token() + return self.process_empty_scalar(token.start_mark) + + def parse_flow_sequence_entry_mapping_end(self): + self.state = self.parse_flow_sequence_entry + token = self.peek_token() + return MappingEndEvent(token.start_mark, token.start_mark) + + # flow_mapping ::= FLOW-MAPPING-START + # (flow_mapping_entry FLOW-ENTRY)* + # flow_mapping_entry? + # FLOW-MAPPING-END + # flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? + + def parse_flow_mapping_first_key(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_flow_mapping_key(first=True) + + def parse_flow_mapping_key(self, first=False): + if not self.check_token(FlowMappingEndToken): + if not first: + if self.check_token(FlowEntryToken): + self.get_token() + else: + token = self.peek_token() + raise ParserError("while parsing a flow mapping", self.marks[-1], + "expected ',' or '}', but got %r" % token.id, token.start_mark) + if self.check_token(KeyToken): + token = self.get_token() + if not self.check_token(ValueToken, + FlowEntryToken, FlowMappingEndToken): + self.states.append(self.parse_flow_mapping_value) + return self.parse_flow_node() + else: + self.state = self.parse_flow_mapping_value + return self.process_empty_scalar(token.end_mark) + elif not self.check_token(FlowMappingEndToken): + self.states.append(self.parse_flow_mapping_empty_value) + return self.parse_flow_node() + token = self.get_token() + event = MappingEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + def parse_flow_mapping_value(self): + if self.check_token(ValueToken): + token = self.get_token() + if not self.check_token(FlowEntryToken, FlowMappingEndToken): + self.states.append(self.parse_flow_mapping_key) + return self.parse_flow_node() + else: + self.state = self.parse_flow_mapping_key + return self.process_empty_scalar(token.end_mark) + else: + self.state = self.parse_flow_mapping_key + token = self.peek_token() + return self.process_empty_scalar(token.start_mark) + + def parse_flow_mapping_empty_value(self): + self.state = self.parse_flow_mapping_key + return self.process_empty_scalar(self.peek_token().start_mark) + + def process_empty_scalar(self, mark): + return ScalarEvent(None, None, (True, False), '', mark, mark) + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/reader.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/reader.py new file mode 100644 index 00000000..774b0219 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/reader.py @@ -0,0 +1,185 @@ +# This module contains abstractions for the input stream. You don't have to +# looks further, there are no pretty code. +# +# We define two classes here. +# +# Mark(source, line, column) +# It's just a record and its only use is producing nice error messages. +# Parser does not use it for any other purposes. +# +# Reader(source, data) +# Reader determines the encoding of `data` and converts it to unicode. +# Reader provides the following methods and attributes: +# reader.peek(length=1) - return the next `length` characters +# reader.forward(length=1) - move the current position to `length` characters. +# reader.index - the number of the current character. +# reader.line, stream.column - the line and the column of the current character. + +__all__ = ['Reader', 'ReaderError'] + +from .error import YAMLError, Mark + +import codecs, re + +class ReaderError(YAMLError): + + def __init__(self, name, position, character, encoding, reason): + self.name = name + self.character = character + self.position = position + self.encoding = encoding + self.reason = reason + + def __str__(self): + if isinstance(self.character, bytes): + return "'%s' codec can't decode byte #x%02x: %s\n" \ + " in \"%s\", position %d" \ + % (self.encoding, ord(self.character), self.reason, + self.name, self.position) + else: + return "unacceptable character #x%04x: %s\n" \ + " in \"%s\", position %d" \ + % (self.character, self.reason, + self.name, self.position) + +class Reader(object): + # Reader: + # - determines the data encoding and converts it to a unicode string, + # - checks if characters are in allowed range, + # - adds '\0' to the end. + + # Reader accepts + # - a `bytes` object, + # - a `str` object, + # - a file-like object with its `read` method returning `str`, + # - a file-like object with its `read` method returning `unicode`. + + # Yeah, it's ugly and slow. + + def __init__(self, stream): + self.name = None + self.stream = None + self.stream_pointer = 0 + self.eof = True + self.buffer = '' + self.pointer = 0 + self.raw_buffer = None + self.raw_decode = None + self.encoding = None + self.index = 0 + self.line = 0 + self.column = 0 + if isinstance(stream, str): + self.name = "<unicode string>" + self.check_printable(stream) + self.buffer = stream+'\0' + elif isinstance(stream, bytes): + self.name = "<byte string>" + self.raw_buffer = stream + self.determine_encoding() + else: + self.stream = stream + self.name = getattr(stream, 'name', "<file>") + self.eof = False + self.raw_buffer = None + self.determine_encoding() + + def peek(self, index=0): + try: + return self.buffer[self.pointer+index] + except IndexError: + self.update(index+1) + return self.buffer[self.pointer+index] + + def prefix(self, length=1): + if self.pointer+length >= len(self.buffer): + self.update(length) + return self.buffer[self.pointer:self.pointer+length] + + def forward(self, length=1): + if self.pointer+length+1 >= len(self.buffer): + self.update(length+1) + while length: + ch = self.buffer[self.pointer] + self.pointer += 1 + self.index += 1 + if ch in '\n\x85\u2028\u2029' \ + or (ch == '\r' and self.buffer[self.pointer] != '\n'): + self.line += 1 + self.column = 0 + elif ch != '\uFEFF': + self.column += 1 + length -= 1 + + def get_mark(self): + if self.stream is None: + return Mark(self.name, self.index, self.line, self.column, + self.buffer, self.pointer) + else: + return Mark(self.name, self.index, self.line, self.column, + None, None) + + def determine_encoding(self): + while not self.eof and (self.raw_buffer is None or len(self.raw_buffer) < 2): + self.update_raw() + if isinstance(self.raw_buffer, bytes): + if self.raw_buffer.startswith(codecs.BOM_UTF16_LE): + self.raw_decode = codecs.utf_16_le_decode + self.encoding = 'utf-16-le' + elif self.raw_buffer.startswith(codecs.BOM_UTF16_BE): + self.raw_decode = codecs.utf_16_be_decode + self.encoding = 'utf-16-be' + else: + self.raw_decode = codecs.utf_8_decode + self.encoding = 'utf-8' + self.update(1) + + NON_PRINTABLE = re.compile('[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uD7FF\uE000-\uFFFD\U00010000-\U0010ffff]') + def check_printable(self, data): + match = self.NON_PRINTABLE.search(data) + if match: + character = match.group() + position = self.index+(len(self.buffer)-self.pointer)+match.start() + raise ReaderError(self.name, position, ord(character), + 'unicode', "special characters are not allowed") + + def update(self, length): + if self.raw_buffer is None: + return + self.buffer = self.buffer[self.pointer:] + self.pointer = 0 + while len(self.buffer) < length: + if not self.eof: + self.update_raw() + if self.raw_decode is not None: + try: + data, converted = self.raw_decode(self.raw_buffer, + 'strict', self.eof) + except UnicodeDecodeError as exc: + character = self.raw_buffer[exc.start] + if self.stream is not None: + position = self.stream_pointer-len(self.raw_buffer)+exc.start + else: + position = exc.start + raise ReaderError(self.name, position, character, + exc.encoding, exc.reason) + else: + data = self.raw_buffer + converted = len(data) + self.check_printable(data) + self.buffer += data + self.raw_buffer = self.raw_buffer[converted:] + if self.eof: + self.buffer += '\0' + self.raw_buffer = None + break + + def update_raw(self, size=4096): + data = self.stream.read(size) + if self.raw_buffer is None: + self.raw_buffer = data + else: + self.raw_buffer += data + self.stream_pointer += len(data) + if not data: + self.eof = True diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/representer.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/representer.py new file mode 100644 index 00000000..3b0b192e --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/representer.py @@ -0,0 +1,389 @@ + +__all__ = ['BaseRepresenter', 'SafeRepresenter', 'Representer', + 'RepresenterError'] + +from .error import * +from .nodes import * + +import datetime, copyreg, types, base64, collections + +class RepresenterError(YAMLError): + pass + +class BaseRepresenter: + + yaml_representers = {} + yaml_multi_representers = {} + + def __init__(self, default_style=None, default_flow_style=False, sort_keys=True): + self.default_style = default_style + self.sort_keys = sort_keys + self.default_flow_style = default_flow_style + self.represented_objects = {} + self.object_keeper = [] + self.alias_key = None + + def represent(self, data): + node = self.represent_data(data) + self.serialize(node) + self.represented_objects = {} + self.object_keeper = [] + self.alias_key = None + + def represent_data(self, data): + if self.ignore_aliases(data): + self.alias_key = None + else: + self.alias_key = id(data) + if self.alias_key is not None: + if self.alias_key in self.represented_objects: + node = self.represented_objects[self.alias_key] + #if node is None: + # raise RepresenterError("recursive objects are not allowed: %r" % data) + return node + #self.represented_objects[alias_key] = None + self.object_keeper.append(data) + data_types = type(data).__mro__ + if data_types[0] in self.yaml_representers: + node = self.yaml_representers[data_types[0]](self, data) + else: + for data_type in data_types: + if data_type in self.yaml_multi_representers: + node = self.yaml_multi_representers[data_type](self, data) + break + else: + if None in self.yaml_multi_representers: + node = self.yaml_multi_representers[None](self, data) + elif None in self.yaml_representers: + node = self.yaml_representers[None](self, data) + else: + node = ScalarNode(None, str(data)) + #if alias_key is not None: + # self.represented_objects[alias_key] = node + return node + + @classmethod + def add_representer(cls, data_type, representer): + if not 'yaml_representers' in cls.__dict__: + cls.yaml_representers = cls.yaml_representers.copy() + cls.yaml_representers[data_type] = representer + + @classmethod + def add_multi_representer(cls, data_type, representer): + if not 'yaml_multi_representers' in cls.__dict__: + cls.yaml_multi_representers = cls.yaml_multi_representers.copy() + cls.yaml_multi_representers[data_type] = representer + + def represent_scalar(self, tag, value, style=None): + if style is None: + style = self.default_style + node = ScalarNode(tag, value, style=style) + if self.alias_key is not None: + self.represented_objects[self.alias_key] = node + return node + + def represent_sequence(self, tag, sequence, flow_style=None): + value = [] + node = SequenceNode(tag, value, flow_style=flow_style) + if self.alias_key is not None: + self.represented_objects[self.alias_key] = node + best_style = True + for item in sequence: + node_item = self.represent_data(item) + if not (isinstance(node_item, ScalarNode) and not node_item.style): + best_style = False + value.append(node_item) + if flow_style is None: + if self.default_flow_style is not None: + node.flow_style = self.default_flow_style + else: + node.flow_style = best_style + return node + + def represent_mapping(self, tag, mapping, flow_style=None): + value = [] + node = MappingNode(tag, value, flow_style=flow_style) + if self.alias_key is not None: + self.represented_objects[self.alias_key] = node + best_style = True + if hasattr(mapping, 'items'): + mapping = list(mapping.items()) + if self.sort_keys: + try: + mapping = sorted(mapping) + except TypeError: + pass + for item_key, item_value in mapping: + node_key = self.represent_data(item_key) + node_value = self.represent_data(item_value) + if not (isinstance(node_key, ScalarNode) and not node_key.style): + best_style = False + if not (isinstance(node_value, ScalarNode) and not node_value.style): + best_style = False + value.append((node_key, node_value)) + if flow_style is None: + if self.default_flow_style is not None: + node.flow_style = self.default_flow_style + else: + node.flow_style = best_style + return node + + def ignore_aliases(self, data): + return False + +class SafeRepresenter(BaseRepresenter): + + def ignore_aliases(self, data): + if data is None: + return True + if isinstance(data, tuple) and data == (): + return True + if isinstance(data, (str, bytes, bool, int, float)): + return True + + def represent_none(self, data): + return self.represent_scalar('tag:yaml.org,2002:null', 'null') + + def represent_str(self, data): + return self.represent_scalar('tag:yaml.org,2002:str', data) + + def represent_binary(self, data): + if hasattr(base64, 'encodebytes'): + data = base64.encodebytes(data).decode('ascii') + else: + data = base64.encodestring(data).decode('ascii') + return self.represent_scalar('tag:yaml.org,2002:binary', data, style='|') + + def represent_bool(self, data): + if data: + value = 'true' + else: + value = 'false' + return self.represent_scalar('tag:yaml.org,2002:bool', value) + + def represent_int(self, data): + return self.represent_scalar('tag:yaml.org,2002:int', str(data)) + + inf_value = 1e300 + while repr(inf_value) != repr(inf_value*inf_value): + inf_value *= inf_value + + def represent_float(self, data): + if data != data or (data == 0.0 and data == 1.0): + value = '.nan' + elif data == self.inf_value: + value = '.inf' + elif data == -self.inf_value: + value = '-.inf' + else: + value = repr(data).lower() + # Note that in some cases `repr(data)` represents a float number + # without the decimal parts. For instance: + # >>> repr(1e17) + # '1e17' + # Unfortunately, this is not a valid float representation according + # to the definition of the `!!float` tag. We fix this by adding + # '.0' before the 'e' symbol. + if '.' not in value and 'e' in value: + value = value.replace('e', '.0e', 1) + return self.represent_scalar('tag:yaml.org,2002:float', value) + + def represent_list(self, data): + #pairs = (len(data) > 0 and isinstance(data, list)) + #if pairs: + # for item in data: + # if not isinstance(item, tuple) or len(item) != 2: + # pairs = False + # break + #if not pairs: + return self.represent_sequence('tag:yaml.org,2002:seq', data) + #value = [] + #for item_key, item_value in data: + # value.append(self.represent_mapping(u'tag:yaml.org,2002:map', + # [(item_key, item_value)])) + #return SequenceNode(u'tag:yaml.org,2002:pairs', value) + + def represent_dict(self, data): + return self.represent_mapping('tag:yaml.org,2002:map', data) + + def represent_set(self, data): + value = {} + for key in data: + value[key] = None + return self.represent_mapping('tag:yaml.org,2002:set', value) + + def represent_date(self, data): + value = data.isoformat() + return self.represent_scalar('tag:yaml.org,2002:timestamp', value) + + def represent_datetime(self, data): + value = data.isoformat(' ') + return self.represent_scalar('tag:yaml.org,2002:timestamp', value) + + def represent_yaml_object(self, tag, data, cls, flow_style=None): + if hasattr(data, '__getstate__'): + state = data.__getstate__() + else: + state = data.__dict__.copy() + return self.represent_mapping(tag, state, flow_style=flow_style) + + def represent_undefined(self, data): + raise RepresenterError("cannot represent an object", data) + +SafeRepresenter.add_representer(type(None), + SafeRepresenter.represent_none) + +SafeRepresenter.add_representer(str, + SafeRepresenter.represent_str) + +SafeRepresenter.add_representer(bytes, + SafeRepresenter.represent_binary) + +SafeRepresenter.add_representer(bool, + SafeRepresenter.represent_bool) + +SafeRepresenter.add_representer(int, + SafeRepresenter.represent_int) + +SafeRepresenter.add_representer(float, + SafeRepresenter.represent_float) + +SafeRepresenter.add_representer(list, + SafeRepresenter.represent_list) + +SafeRepresenter.add_representer(tuple, + SafeRepresenter.represent_list) + +SafeRepresenter.add_representer(dict, + SafeRepresenter.represent_dict) + +SafeRepresenter.add_representer(set, + SafeRepresenter.represent_set) + +SafeRepresenter.add_representer(datetime.date, + SafeRepresenter.represent_date) + +SafeRepresenter.add_representer(datetime.datetime, + SafeRepresenter.represent_datetime) + +SafeRepresenter.add_representer(None, + SafeRepresenter.represent_undefined) + +class Representer(SafeRepresenter): + + def represent_complex(self, data): + if data.imag == 0.0: + data = '%r' % data.real + elif data.real == 0.0: + data = '%rj' % data.imag + elif data.imag > 0: + data = '%r+%rj' % (data.real, data.imag) + else: + data = '%r%rj' % (data.real, data.imag) + return self.represent_scalar('tag:yaml.org,2002:python/complex', data) + + def represent_tuple(self, data): + return self.represent_sequence('tag:yaml.org,2002:python/tuple', data) + + def represent_name(self, data): + name = '%s.%s' % (data.__module__, data.__name__) + return self.represent_scalar('tag:yaml.org,2002:python/name:'+name, '') + + def represent_module(self, data): + return self.represent_scalar( + 'tag:yaml.org,2002:python/module:'+data.__name__, '') + + def represent_object(self, data): + # We use __reduce__ API to save the data. data.__reduce__ returns + # a tuple of length 2-5: + # (function, args, state, listitems, dictitems) + + # For reconstructing, we calls function(*args), then set its state, + # listitems, and dictitems if they are not None. + + # A special case is when function.__name__ == '__newobj__'. In this + # case we create the object with args[0].__new__(*args). + + # Another special case is when __reduce__ returns a string - we don't + # support it. + + # We produce a !!python/object, !!python/object/new or + # !!python/object/apply node. + + cls = type(data) + if cls in copyreg.dispatch_table: + reduce = copyreg.dispatch_table[cls](data) + elif hasattr(data, '__reduce_ex__'): + reduce = data.__reduce_ex__(2) + elif hasattr(data, '__reduce__'): + reduce = data.__reduce__() + else: + raise RepresenterError("cannot represent an object", data) + reduce = (list(reduce)+[None]*5)[:5] + function, args, state, listitems, dictitems = reduce + args = list(args) + if state is None: + state = {} + if listitems is not None: + listitems = list(listitems) + if dictitems is not None: + dictitems = dict(dictitems) + if function.__name__ == '__newobj__': + function = args[0] + args = args[1:] + tag = 'tag:yaml.org,2002:python/object/new:' + newobj = True + else: + tag = 'tag:yaml.org,2002:python/object/apply:' + newobj = False + function_name = '%s.%s' % (function.__module__, function.__name__) + if not args and not listitems and not dictitems \ + and isinstance(state, dict) and newobj: + return self.represent_mapping( + 'tag:yaml.org,2002:python/object:'+function_name, state) + if not listitems and not dictitems \ + and isinstance(state, dict) and not state: + return self.represent_sequence(tag+function_name, args) + value = {} + if args: + value['args'] = args + if state or not isinstance(state, dict): + value['state'] = state + if listitems: + value['listitems'] = listitems + if dictitems: + value['dictitems'] = dictitems + return self.represent_mapping(tag+function_name, value) + + def represent_ordered_dict(self, data): + # Provide uniform representation across different Python versions. + data_type = type(data) + tag = 'tag:yaml.org,2002:python/object/apply:%s.%s' \ + % (data_type.__module__, data_type.__name__) + items = [[key, value] for key, value in data.items()] + return self.represent_sequence(tag, [items]) + +Representer.add_representer(complex, + Representer.represent_complex) + +Representer.add_representer(tuple, + Representer.represent_tuple) + +Representer.add_representer(type, + Representer.represent_name) + +Representer.add_representer(collections.OrderedDict, + Representer.represent_ordered_dict) + +Representer.add_representer(types.FunctionType, + Representer.represent_name) + +Representer.add_representer(types.BuiltinFunctionType, + Representer.represent_name) + +Representer.add_representer(types.ModuleType, + Representer.represent_module) + +Representer.add_multi_representer(object, + Representer.represent_object) + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/resolver.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/resolver.py new file mode 100644 index 00000000..013896d2 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/resolver.py @@ -0,0 +1,227 @@ + +__all__ = ['BaseResolver', 'Resolver'] + +from .error import * +from .nodes import * + +import re + +class ResolverError(YAMLError): + pass + +class BaseResolver: + + DEFAULT_SCALAR_TAG = 'tag:yaml.org,2002:str' + DEFAULT_SEQUENCE_TAG = 'tag:yaml.org,2002:seq' + DEFAULT_MAPPING_TAG = 'tag:yaml.org,2002:map' + + yaml_implicit_resolvers = {} + yaml_path_resolvers = {} + + def __init__(self): + self.resolver_exact_paths = [] + self.resolver_prefix_paths = [] + + @classmethod + def add_implicit_resolver(cls, tag, regexp, first): + if not 'yaml_implicit_resolvers' in cls.__dict__: + implicit_resolvers = {} + for key in cls.yaml_implicit_resolvers: + implicit_resolvers[key] = cls.yaml_implicit_resolvers[key][:] + cls.yaml_implicit_resolvers = implicit_resolvers + if first is None: + first = [None] + for ch in first: + cls.yaml_implicit_resolvers.setdefault(ch, []).append((tag, regexp)) + + @classmethod + def add_path_resolver(cls, tag, path, kind=None): + # Note: `add_path_resolver` is experimental. The API could be changed. + # `new_path` is a pattern that is matched against the path from the + # root to the node that is being considered. `node_path` elements are + # tuples `(node_check, index_check)`. `node_check` is a node class: + # `ScalarNode`, `SequenceNode`, `MappingNode` or `None`. `None` + # matches any kind of a node. `index_check` could be `None`, a boolean + # value, a string value, or a number. `None` and `False` match against + # any _value_ of sequence and mapping nodes. `True` matches against + # any _key_ of a mapping node. A string `index_check` matches against + # a mapping value that corresponds to a scalar key which content is + # equal to the `index_check` value. An integer `index_check` matches + # against a sequence value with the index equal to `index_check`. + if not 'yaml_path_resolvers' in cls.__dict__: + cls.yaml_path_resolvers = cls.yaml_path_resolvers.copy() + new_path = [] + for element in path: + if isinstance(element, (list, tuple)): + if len(element) == 2: + node_check, index_check = element + elif len(element) == 1: + node_check = element[0] + index_check = True + else: + raise ResolverError("Invalid path element: %s" % element) + else: + node_check = None + index_check = element + if node_check is str: + node_check = ScalarNode + elif node_check is list: + node_check = SequenceNode + elif node_check is dict: + node_check = MappingNode + elif node_check not in [ScalarNode, SequenceNode, MappingNode] \ + and not isinstance(node_check, str) \ + and node_check is not None: + raise ResolverError("Invalid node checker: %s" % node_check) + if not isinstance(index_check, (str, int)) \ + and index_check is not None: + raise ResolverError("Invalid index checker: %s" % index_check) + new_path.append((node_check, index_check)) + if kind is str: + kind = ScalarNode + elif kind is list: + kind = SequenceNode + elif kind is dict: + kind = MappingNode + elif kind not in [ScalarNode, SequenceNode, MappingNode] \ + and kind is not None: + raise ResolverError("Invalid node kind: %s" % kind) + cls.yaml_path_resolvers[tuple(new_path), kind] = tag + + def descend_resolver(self, current_node, current_index): + if not self.yaml_path_resolvers: + return + exact_paths = {} + prefix_paths = [] + if current_node: + depth = len(self.resolver_prefix_paths) + for path, kind in self.resolver_prefix_paths[-1]: + if self.check_resolver_prefix(depth, path, kind, + current_node, current_index): + if len(path) > depth: + prefix_paths.append((path, kind)) + else: + exact_paths[kind] = self.yaml_path_resolvers[path, kind] + else: + for path, kind in self.yaml_path_resolvers: + if not path: + exact_paths[kind] = self.yaml_path_resolvers[path, kind] + else: + prefix_paths.append((path, kind)) + self.resolver_exact_paths.append(exact_paths) + self.resolver_prefix_paths.append(prefix_paths) + + def ascend_resolver(self): + if not self.yaml_path_resolvers: + return + self.resolver_exact_paths.pop() + self.resolver_prefix_paths.pop() + + def check_resolver_prefix(self, depth, path, kind, + current_node, current_index): + node_check, index_check = path[depth-1] + if isinstance(node_check, str): + if current_node.tag != node_check: + return + elif node_check is not None: + if not isinstance(current_node, node_check): + return + if index_check is True and current_index is not None: + return + if (index_check is False or index_check is None) \ + and current_index is None: + return + if isinstance(index_check, str): + if not (isinstance(current_index, ScalarNode) + and index_check == current_index.value): + return + elif isinstance(index_check, int) and not isinstance(index_check, bool): + if index_check != current_index: + return + return True + + def resolve(self, kind, value, implicit): + if kind is ScalarNode and implicit[0]: + if value == '': + resolvers = self.yaml_implicit_resolvers.get('', []) + else: + resolvers = self.yaml_implicit_resolvers.get(value[0], []) + wildcard_resolvers = self.yaml_implicit_resolvers.get(None, []) + for tag, regexp in resolvers + wildcard_resolvers: + if regexp.match(value): + return tag + implicit = implicit[1] + if self.yaml_path_resolvers: + exact_paths = self.resolver_exact_paths[-1] + if kind in exact_paths: + return exact_paths[kind] + if None in exact_paths: + return exact_paths[None] + if kind is ScalarNode: + return self.DEFAULT_SCALAR_TAG + elif kind is SequenceNode: + return self.DEFAULT_SEQUENCE_TAG + elif kind is MappingNode: + return self.DEFAULT_MAPPING_TAG + +class Resolver(BaseResolver): + pass + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:bool', + re.compile(r'''^(?:yes|Yes|YES|no|No|NO + |true|True|TRUE|false|False|FALSE + |on|On|ON|off|Off|OFF)$''', re.X), + list('yYnNtTfFoO')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:float', + re.compile(r'''^(?:[-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+][0-9]+)? + |\.[0-9_]+(?:[eE][-+][0-9]+)? + |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]* + |[-+]?\.(?:inf|Inf|INF) + |\.(?:nan|NaN|NAN))$''', re.X), + list('-+0123456789.')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:int', + re.compile(r'''^(?:[-+]?0b[0-1_]+ + |[-+]?0[0-7_]+ + |[-+]?(?:0|[1-9][0-9_]*) + |[-+]?0x[0-9a-fA-F_]+ + |[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$''', re.X), + list('-+0123456789')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:merge', + re.compile(r'^(?:<<)$'), + ['<']) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:null', + re.compile(r'''^(?: ~ + |null|Null|NULL + | )$''', re.X), + ['~', 'n', 'N', '']) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:timestamp', + re.compile(r'''^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] + |[0-9][0-9][0-9][0-9] -[0-9][0-9]? -[0-9][0-9]? + (?:[Tt]|[ \t]+)[0-9][0-9]? + :[0-9][0-9] :[0-9][0-9] (?:\.[0-9]*)? + (?:[ \t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$''', re.X), + list('0123456789')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:value', + re.compile(r'^(?:=)$'), + ['=']) + +# The following resolver is only for documentation purposes. It cannot work +# because plain scalars cannot start with '!', '&', or '*'. +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:yaml', + re.compile(r'^(?:!|&|\*)$'), + list('!&*')) + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/scanner.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/scanner.py new file mode 100644 index 00000000..7437ede1 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/scanner.py @@ -0,0 +1,1435 @@ + +# Scanner produces tokens of the following types: +# STREAM-START +# STREAM-END +# DIRECTIVE(name, value) +# DOCUMENT-START +# DOCUMENT-END +# BLOCK-SEQUENCE-START +# BLOCK-MAPPING-START +# BLOCK-END +# FLOW-SEQUENCE-START +# FLOW-MAPPING-START +# FLOW-SEQUENCE-END +# FLOW-MAPPING-END +# BLOCK-ENTRY +# FLOW-ENTRY +# KEY +# VALUE +# ALIAS(value) +# ANCHOR(value) +# TAG(value) +# SCALAR(value, plain, style) +# +# Read comments in the Scanner code for more details. +# + +__all__ = ['Scanner', 'ScannerError'] + +from .error import MarkedYAMLError +from .tokens import * + +class ScannerError(MarkedYAMLError): + pass + +class SimpleKey: + # See below simple keys treatment. + + def __init__(self, token_number, required, index, line, column, mark): + self.token_number = token_number + self.required = required + self.index = index + self.line = line + self.column = column + self.mark = mark + +class Scanner: + + def __init__(self): + """Initialize the scanner.""" + # It is assumed that Scanner and Reader will have a common descendant. + # Reader do the dirty work of checking for BOM and converting the + # input data to Unicode. It also adds NUL to the end. + # + # Reader supports the following methods + # self.peek(i=0) # peek the next i-th character + # self.prefix(l=1) # peek the next l characters + # self.forward(l=1) # read the next l characters and move the pointer. + + # Had we reached the end of the stream? + self.done = False + + # The number of unclosed '{' and '['. `flow_level == 0` means block + # context. + self.flow_level = 0 + + # List of processed tokens that are not yet emitted. + self.tokens = [] + + # Add the STREAM-START token. + self.fetch_stream_start() + + # Number of tokens that were emitted through the `get_token` method. + self.tokens_taken = 0 + + # The current indentation level. + self.indent = -1 + + # Past indentation levels. + self.indents = [] + + # Variables related to simple keys treatment. + + # A simple key is a key that is not denoted by the '?' indicator. + # Example of simple keys: + # --- + # block simple key: value + # ? not a simple key: + # : { flow simple key: value } + # We emit the KEY token before all keys, so when we find a potential + # simple key, we try to locate the corresponding ':' indicator. + # Simple keys should be limited to a single line and 1024 characters. + + # Can a simple key start at the current position? A simple key may + # start: + # - at the beginning of the line, not counting indentation spaces + # (in block context), + # - after '{', '[', ',' (in the flow context), + # - after '?', ':', '-' (in the block context). + # In the block context, this flag also signifies if a block collection + # may start at the current position. + self.allow_simple_key = True + + # Keep track of possible simple keys. This is a dictionary. The key + # is `flow_level`; there can be no more that one possible simple key + # for each level. The value is a SimpleKey record: + # (token_number, required, index, line, column, mark) + # A simple key may start with ALIAS, ANCHOR, TAG, SCALAR(flow), + # '[', or '{' tokens. + self.possible_simple_keys = {} + + # Public methods. + + def check_token(self, *choices): + # Check if the next token is one of the given types. + while self.need_more_tokens(): + self.fetch_more_tokens() + if self.tokens: + if not choices: + return True + for choice in choices: + if isinstance(self.tokens[0], choice): + return True + return False + + def peek_token(self): + # Return the next token, but do not delete if from the queue. + # Return None if no more tokens. + while self.need_more_tokens(): + self.fetch_more_tokens() + if self.tokens: + return self.tokens[0] + else: + return None + + def get_token(self): + # Return the next token. + while self.need_more_tokens(): + self.fetch_more_tokens() + if self.tokens: + self.tokens_taken += 1 + return self.tokens.pop(0) + + # Private methods. + + def need_more_tokens(self): + if self.done: + return False + if not self.tokens: + return True + # The current token may be a potential simple key, so we + # need to look further. + self.stale_possible_simple_keys() + if self.next_possible_simple_key() == self.tokens_taken: + return True + + def fetch_more_tokens(self): + + # Eat whitespaces and comments until we reach the next token. + self.scan_to_next_token() + + # Remove obsolete possible simple keys. + self.stale_possible_simple_keys() + + # Compare the current indentation and column. It may add some tokens + # and decrease the current indentation level. + self.unwind_indent(self.column) + + # Peek the next character. + ch = self.peek() + + # Is it the end of stream? + if ch == '\0': + return self.fetch_stream_end() + + # Is it a directive? + if ch == '%' and self.check_directive(): + return self.fetch_directive() + + # Is it the document start? + if ch == '-' and self.check_document_start(): + return self.fetch_document_start() + + # Is it the document end? + if ch == '.' and self.check_document_end(): + return self.fetch_document_end() + + # TODO: support for BOM within a stream. + #if ch == '\uFEFF': + # return self.fetch_bom() <-- issue BOMToken + + # Note: the order of the following checks is NOT significant. + + # Is it the flow sequence start indicator? + if ch == '[': + return self.fetch_flow_sequence_start() + + # Is it the flow mapping start indicator? + if ch == '{': + return self.fetch_flow_mapping_start() + + # Is it the flow sequence end indicator? + if ch == ']': + return self.fetch_flow_sequence_end() + + # Is it the flow mapping end indicator? + if ch == '}': + return self.fetch_flow_mapping_end() + + # Is it the flow entry indicator? + if ch == ',': + return self.fetch_flow_entry() + + # Is it the block entry indicator? + if ch == '-' and self.check_block_entry(): + return self.fetch_block_entry() + + # Is it the key indicator? + if ch == '?' and self.check_key(): + return self.fetch_key() + + # Is it the value indicator? + if ch == ':' and self.check_value(): + return self.fetch_value() + + # Is it an alias? + if ch == '*': + return self.fetch_alias() + + # Is it an anchor? + if ch == '&': + return self.fetch_anchor() + + # Is it a tag? + if ch == '!': + return self.fetch_tag() + + # Is it a literal scalar? + if ch == '|' and not self.flow_level: + return self.fetch_literal() + + # Is it a folded scalar? + if ch == '>' and not self.flow_level: + return self.fetch_folded() + + # Is it a single quoted scalar? + if ch == '\'': + return self.fetch_single() + + # Is it a double quoted scalar? + if ch == '\"': + return self.fetch_double() + + # It must be a plain scalar then. + if self.check_plain(): + return self.fetch_plain() + + # No? It's an error. Let's produce a nice error message. + raise ScannerError("while scanning for the next token", None, + "found character %r that cannot start any token" % ch, + self.get_mark()) + + # Simple keys treatment. + + def next_possible_simple_key(self): + # Return the number of the nearest possible simple key. Actually we + # don't need to loop through the whole dictionary. We may replace it + # with the following code: + # if not self.possible_simple_keys: + # return None + # return self.possible_simple_keys[ + # min(self.possible_simple_keys.keys())].token_number + min_token_number = None + for level in self.possible_simple_keys: + key = self.possible_simple_keys[level] + if min_token_number is None or key.token_number < min_token_number: + min_token_number = key.token_number + return min_token_number + + def stale_possible_simple_keys(self): + # Remove entries that are no longer possible simple keys. According to + # the YAML specification, simple keys + # - should be limited to a single line, + # - should be no longer than 1024 characters. + # Disabling this procedure will allow simple keys of any length and + # height (may cause problems if indentation is broken though). + for level in list(self.possible_simple_keys): + key = self.possible_simple_keys[level] + if key.line != self.line \ + or self.index-key.index > 1024: + if key.required: + raise ScannerError("while scanning a simple key", key.mark, + "could not find expected ':'", self.get_mark()) + del self.possible_simple_keys[level] + + def save_possible_simple_key(self): + # The next token may start a simple key. We check if it's possible + # and save its position. This function is called for + # ALIAS, ANCHOR, TAG, SCALAR(flow), '[', and '{'. + + # Check if a simple key is required at the current position. + required = not self.flow_level and self.indent == self.column + + # The next token might be a simple key. Let's save it's number and + # position. + if self.allow_simple_key: + self.remove_possible_simple_key() + token_number = self.tokens_taken+len(self.tokens) + key = SimpleKey(token_number, required, + self.index, self.line, self.column, self.get_mark()) + self.possible_simple_keys[self.flow_level] = key + + def remove_possible_simple_key(self): + # Remove the saved possible key position at the current flow level. + if self.flow_level in self.possible_simple_keys: + key = self.possible_simple_keys[self.flow_level] + + if key.required: + raise ScannerError("while scanning a simple key", key.mark, + "could not find expected ':'", self.get_mark()) + + del self.possible_simple_keys[self.flow_level] + + # Indentation functions. + + def unwind_indent(self, column): + + ## In flow context, tokens should respect indentation. + ## Actually the condition should be `self.indent >= column` according to + ## the spec. But this condition will prohibit intuitively correct + ## constructions such as + ## key : { + ## } + #if self.flow_level and self.indent > column: + # raise ScannerError(None, None, + # "invalid indentation or unclosed '[' or '{'", + # self.get_mark()) + + # In the flow context, indentation is ignored. We make the scanner less + # restrictive then specification requires. + if self.flow_level: + return + + # In block context, we may need to issue the BLOCK-END tokens. + while self.indent > column: + mark = self.get_mark() + self.indent = self.indents.pop() + self.tokens.append(BlockEndToken(mark, mark)) + + def add_indent(self, column): + # Check if we need to increase indentation. + if self.indent < column: + self.indents.append(self.indent) + self.indent = column + return True + return False + + # Fetchers. + + def fetch_stream_start(self): + # We always add STREAM-START as the first token and STREAM-END as the + # last token. + + # Read the token. + mark = self.get_mark() + + # Add STREAM-START. + self.tokens.append(StreamStartToken(mark, mark, + encoding=self.encoding)) + + + def fetch_stream_end(self): + + # Set the current indentation to -1. + self.unwind_indent(-1) + + # Reset simple keys. + self.remove_possible_simple_key() + self.allow_simple_key = False + self.possible_simple_keys = {} + + # Read the token. + mark = self.get_mark() + + # Add STREAM-END. + self.tokens.append(StreamEndToken(mark, mark)) + + # The steam is finished. + self.done = True + + def fetch_directive(self): + + # Set the current indentation to -1. + self.unwind_indent(-1) + + # Reset simple keys. + self.remove_possible_simple_key() + self.allow_simple_key = False + + # Scan and add DIRECTIVE. + self.tokens.append(self.scan_directive()) + + def fetch_document_start(self): + self.fetch_document_indicator(DocumentStartToken) + + def fetch_document_end(self): + self.fetch_document_indicator(DocumentEndToken) + + def fetch_document_indicator(self, TokenClass): + + # Set the current indentation to -1. + self.unwind_indent(-1) + + # Reset simple keys. Note that there could not be a block collection + # after '---'. + self.remove_possible_simple_key() + self.allow_simple_key = False + + # Add DOCUMENT-START or DOCUMENT-END. + start_mark = self.get_mark() + self.forward(3) + end_mark = self.get_mark() + self.tokens.append(TokenClass(start_mark, end_mark)) + + def fetch_flow_sequence_start(self): + self.fetch_flow_collection_start(FlowSequenceStartToken) + + def fetch_flow_mapping_start(self): + self.fetch_flow_collection_start(FlowMappingStartToken) + + def fetch_flow_collection_start(self, TokenClass): + + # '[' and '{' may start a simple key. + self.save_possible_simple_key() + + # Increase the flow level. + self.flow_level += 1 + + # Simple keys are allowed after '[' and '{'. + self.allow_simple_key = True + + # Add FLOW-SEQUENCE-START or FLOW-MAPPING-START. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(TokenClass(start_mark, end_mark)) + + def fetch_flow_sequence_end(self): + self.fetch_flow_collection_end(FlowSequenceEndToken) + + def fetch_flow_mapping_end(self): + self.fetch_flow_collection_end(FlowMappingEndToken) + + def fetch_flow_collection_end(self, TokenClass): + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Decrease the flow level. + self.flow_level -= 1 + + # No simple keys after ']' or '}'. + self.allow_simple_key = False + + # Add FLOW-SEQUENCE-END or FLOW-MAPPING-END. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(TokenClass(start_mark, end_mark)) + + def fetch_flow_entry(self): + + # Simple keys are allowed after ','. + self.allow_simple_key = True + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add FLOW-ENTRY. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(FlowEntryToken(start_mark, end_mark)) + + def fetch_block_entry(self): + + # Block context needs additional checks. + if not self.flow_level: + + # Are we allowed to start a new entry? + if not self.allow_simple_key: + raise ScannerError(None, None, + "sequence entries are not allowed here", + self.get_mark()) + + # We may need to add BLOCK-SEQUENCE-START. + if self.add_indent(self.column): + mark = self.get_mark() + self.tokens.append(BlockSequenceStartToken(mark, mark)) + + # It's an error for the block entry to occur in the flow context, + # but we let the parser detect this. + else: + pass + + # Simple keys are allowed after '-'. + self.allow_simple_key = True + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add BLOCK-ENTRY. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(BlockEntryToken(start_mark, end_mark)) + + def fetch_key(self): + + # Block context needs additional checks. + if not self.flow_level: + + # Are we allowed to start a key (not necessary a simple)? + if not self.allow_simple_key: + raise ScannerError(None, None, + "mapping keys are not allowed here", + self.get_mark()) + + # We may need to add BLOCK-MAPPING-START. + if self.add_indent(self.column): + mark = self.get_mark() + self.tokens.append(BlockMappingStartToken(mark, mark)) + + # Simple keys are allowed after '?' in the block context. + self.allow_simple_key = not self.flow_level + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add KEY. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(KeyToken(start_mark, end_mark)) + + def fetch_value(self): + + # Do we determine a simple key? + if self.flow_level in self.possible_simple_keys: + + # Add KEY. + key = self.possible_simple_keys[self.flow_level] + del self.possible_simple_keys[self.flow_level] + self.tokens.insert(key.token_number-self.tokens_taken, + KeyToken(key.mark, key.mark)) + + # If this key starts a new block mapping, we need to add + # BLOCK-MAPPING-START. + if not self.flow_level: + if self.add_indent(key.column): + self.tokens.insert(key.token_number-self.tokens_taken, + BlockMappingStartToken(key.mark, key.mark)) + + # There cannot be two simple keys one after another. + self.allow_simple_key = False + + # It must be a part of a complex key. + else: + + # Block context needs additional checks. + # (Do we really need them? They will be caught by the parser + # anyway.) + if not self.flow_level: + + # We are allowed to start a complex value if and only if + # we can start a simple key. + if not self.allow_simple_key: + raise ScannerError(None, None, + "mapping values are not allowed here", + self.get_mark()) + + # If this value starts a new block mapping, we need to add + # BLOCK-MAPPING-START. It will be detected as an error later by + # the parser. + if not self.flow_level: + if self.add_indent(self.column): + mark = self.get_mark() + self.tokens.append(BlockMappingStartToken(mark, mark)) + + # Simple keys are allowed after ':' in the block context. + self.allow_simple_key = not self.flow_level + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add VALUE. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(ValueToken(start_mark, end_mark)) + + def fetch_alias(self): + + # ALIAS could be a simple key. + self.save_possible_simple_key() + + # No simple keys after ALIAS. + self.allow_simple_key = False + + # Scan and add ALIAS. + self.tokens.append(self.scan_anchor(AliasToken)) + + def fetch_anchor(self): + + # ANCHOR could start a simple key. + self.save_possible_simple_key() + + # No simple keys after ANCHOR. + self.allow_simple_key = False + + # Scan and add ANCHOR. + self.tokens.append(self.scan_anchor(AnchorToken)) + + def fetch_tag(self): + + # TAG could start a simple key. + self.save_possible_simple_key() + + # No simple keys after TAG. + self.allow_simple_key = False + + # Scan and add TAG. + self.tokens.append(self.scan_tag()) + + def fetch_literal(self): + self.fetch_block_scalar(style='|') + + def fetch_folded(self): + self.fetch_block_scalar(style='>') + + def fetch_block_scalar(self, style): + + # A simple key may follow a block scalar. + self.allow_simple_key = True + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Scan and add SCALAR. + self.tokens.append(self.scan_block_scalar(style)) + + def fetch_single(self): + self.fetch_flow_scalar(style='\'') + + def fetch_double(self): + self.fetch_flow_scalar(style='"') + + def fetch_flow_scalar(self, style): + + # A flow scalar could be a simple key. + self.save_possible_simple_key() + + # No simple keys after flow scalars. + self.allow_simple_key = False + + # Scan and add SCALAR. + self.tokens.append(self.scan_flow_scalar(style)) + + def fetch_plain(self): + + # A plain scalar could be a simple key. + self.save_possible_simple_key() + + # No simple keys after plain scalars. But note that `scan_plain` will + # change this flag if the scan is finished at the beginning of the + # line. + self.allow_simple_key = False + + # Scan and add SCALAR. May change `allow_simple_key`. + self.tokens.append(self.scan_plain()) + + # Checkers. + + def check_directive(self): + + # DIRECTIVE: ^ '%' ... + # The '%' indicator is already checked. + if self.column == 0: + return True + + def check_document_start(self): + + # DOCUMENT-START: ^ '---' (' '|'\n') + if self.column == 0: + if self.prefix(3) == '---' \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return True + + def check_document_end(self): + + # DOCUMENT-END: ^ '...' (' '|'\n') + if self.column == 0: + if self.prefix(3) == '...' \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return True + + def check_block_entry(self): + + # BLOCK-ENTRY: '-' (' '|'\n') + return self.peek(1) in '\0 \t\r\n\x85\u2028\u2029' + + def check_key(self): + + # KEY(flow context): '?' + if self.flow_level: + return True + + # KEY(block context): '?' (' '|'\n') + else: + return self.peek(1) in '\0 \t\r\n\x85\u2028\u2029' + + def check_value(self): + + # VALUE(flow context): ':' + if self.flow_level: + return True + + # VALUE(block context): ':' (' '|'\n') + else: + return self.peek(1) in '\0 \t\r\n\x85\u2028\u2029' + + def check_plain(self): + + # A plain scalar may start with any non-space character except: + # '-', '?', ':', ',', '[', ']', '{', '}', + # '#', '&', '*', '!', '|', '>', '\'', '\"', + # '%', '@', '`'. + # + # It may also start with + # '-', '?', ':' + # if it is followed by a non-space character. + # + # Note that we limit the last rule to the block context (except the + # '-' character) because we want the flow context to be space + # independent. + ch = self.peek() + return ch not in '\0 \t\r\n\x85\u2028\u2029-?:,[]{}#&*!|>\'\"%@`' \ + or (self.peek(1) not in '\0 \t\r\n\x85\u2028\u2029' + and (ch == '-' or (not self.flow_level and ch in '?:'))) + + # Scanners. + + def scan_to_next_token(self): + # We ignore spaces, line breaks and comments. + # If we find a line break in the block context, we set the flag + # `allow_simple_key` on. + # The byte order mark is stripped if it's the first character in the + # stream. We do not yet support BOM inside the stream as the + # specification requires. Any such mark will be considered as a part + # of the document. + # + # TODO: We need to make tab handling rules more sane. A good rule is + # Tabs cannot precede tokens + # BLOCK-SEQUENCE-START, BLOCK-MAPPING-START, BLOCK-END, + # KEY(block), VALUE(block), BLOCK-ENTRY + # So the checking code is + # if <TAB>: + # self.allow_simple_keys = False + # We also need to add the check for `allow_simple_keys == True` to + # `unwind_indent` before issuing BLOCK-END. + # Scanners for block, flow, and plain scalars need to be modified. + + if self.index == 0 and self.peek() == '\uFEFF': + self.forward() + found = False + while not found: + while self.peek() == ' ': + self.forward() + if self.peek() == '#': + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + if self.scan_line_break(): + if not self.flow_level: + self.allow_simple_key = True + else: + found = True + + def scan_directive(self): + # See the specification for details. + start_mark = self.get_mark() + self.forward() + name = self.scan_directive_name(start_mark) + value = None + if name == 'YAML': + value = self.scan_yaml_directive_value(start_mark) + end_mark = self.get_mark() + elif name == 'TAG': + value = self.scan_tag_directive_value(start_mark) + end_mark = self.get_mark() + else: + end_mark = self.get_mark() + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + self.scan_directive_ignored_line(start_mark) + return DirectiveToken(name, value, start_mark, end_mark) + + def scan_directive_name(self, start_mark): + # See the specification for details. + length = 0 + ch = self.peek(length) + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_': + length += 1 + ch = self.peek(length) + if not length: + raise ScannerError("while scanning a directive", start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + value = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + return value + + def scan_yaml_directive_value(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + major = self.scan_yaml_directive_number(start_mark) + if self.peek() != '.': + raise ScannerError("while scanning a directive", start_mark, + "expected a digit or '.', but found %r" % self.peek(), + self.get_mark()) + self.forward() + minor = self.scan_yaml_directive_number(start_mark) + if self.peek() not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected a digit or ' ', but found %r" % self.peek(), + self.get_mark()) + return (major, minor) + + def scan_yaml_directive_number(self, start_mark): + # See the specification for details. + ch = self.peek() + if not ('0' <= ch <= '9'): + raise ScannerError("while scanning a directive", start_mark, + "expected a digit, but found %r" % ch, self.get_mark()) + length = 0 + while '0' <= self.peek(length) <= '9': + length += 1 + value = int(self.prefix(length)) + self.forward(length) + return value + + def scan_tag_directive_value(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + handle = self.scan_tag_directive_handle(start_mark) + while self.peek() == ' ': + self.forward() + prefix = self.scan_tag_directive_prefix(start_mark) + return (handle, prefix) + + def scan_tag_directive_handle(self, start_mark): + # See the specification for details. + value = self.scan_tag_handle('directive', start_mark) + ch = self.peek() + if ch != ' ': + raise ScannerError("while scanning a directive", start_mark, + "expected ' ', but found %r" % ch, self.get_mark()) + return value + + def scan_tag_directive_prefix(self, start_mark): + # See the specification for details. + value = self.scan_tag_uri('directive', start_mark) + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected ' ', but found %r" % ch, self.get_mark()) + return value + + def scan_directive_ignored_line(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + if self.peek() == '#': + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + ch = self.peek() + if ch not in '\0\r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected a comment or a line break, but found %r" + % ch, self.get_mark()) + self.scan_line_break() + + def scan_anchor(self, TokenClass): + # The specification does not restrict characters for anchors and + # aliases. This may lead to problems, for instance, the document: + # [ *alias, value ] + # can be interpreted in two ways, as + # [ "value" ] + # and + # [ *alias , "value" ] + # Therefore we restrict aliases to numbers and ASCII letters. + start_mark = self.get_mark() + indicator = self.peek() + if indicator == '*': + name = 'alias' + else: + name = 'anchor' + self.forward() + length = 0 + ch = self.peek(length) + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_': + length += 1 + ch = self.peek(length) + if not length: + raise ScannerError("while scanning an %s" % name, start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + value = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch not in '\0 \t\r\n\x85\u2028\u2029?:,]}%@`': + raise ScannerError("while scanning an %s" % name, start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + end_mark = self.get_mark() + return TokenClass(value, start_mark, end_mark) + + def scan_tag(self): + # See the specification for details. + start_mark = self.get_mark() + ch = self.peek(1) + if ch == '<': + handle = None + self.forward(2) + suffix = self.scan_tag_uri('tag', start_mark) + if self.peek() != '>': + raise ScannerError("while parsing a tag", start_mark, + "expected '>', but found %r" % self.peek(), + self.get_mark()) + self.forward() + elif ch in '\0 \t\r\n\x85\u2028\u2029': + handle = None + suffix = '!' + self.forward() + else: + length = 1 + use_handle = False + while ch not in '\0 \r\n\x85\u2028\u2029': + if ch == '!': + use_handle = True + break + length += 1 + ch = self.peek(length) + handle = '!' + if use_handle: + handle = self.scan_tag_handle('tag', start_mark) + else: + handle = '!' + self.forward() + suffix = self.scan_tag_uri('tag', start_mark) + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a tag", start_mark, + "expected ' ', but found %r" % ch, self.get_mark()) + value = (handle, suffix) + end_mark = self.get_mark() + return TagToken(value, start_mark, end_mark) + + def scan_block_scalar(self, style): + # See the specification for details. + + if style == '>': + folded = True + else: + folded = False + + chunks = [] + start_mark = self.get_mark() + + # Scan the header. + self.forward() + chomping, increment = self.scan_block_scalar_indicators(start_mark) + self.scan_block_scalar_ignored_line(start_mark) + + # Determine the indentation level and go to the first non-empty line. + min_indent = self.indent+1 + if min_indent < 1: + min_indent = 1 + if increment is None: + breaks, max_indent, end_mark = self.scan_block_scalar_indentation() + indent = max(min_indent, max_indent) + else: + indent = min_indent+increment-1 + breaks, end_mark = self.scan_block_scalar_breaks(indent) + line_break = '' + + # Scan the inner part of the block scalar. + while self.column == indent and self.peek() != '\0': + chunks.extend(breaks) + leading_non_space = self.peek() not in ' \t' + length = 0 + while self.peek(length) not in '\0\r\n\x85\u2028\u2029': + length += 1 + chunks.append(self.prefix(length)) + self.forward(length) + line_break = self.scan_line_break() + breaks, end_mark = self.scan_block_scalar_breaks(indent) + if self.column == indent and self.peek() != '\0': + + # Unfortunately, folding rules are ambiguous. + # + # This is the folding according to the specification: + + if folded and line_break == '\n' \ + and leading_non_space and self.peek() not in ' \t': + if not breaks: + chunks.append(' ') + else: + chunks.append(line_break) + + # This is Clark Evans's interpretation (also in the spec + # examples): + # + #if folded and line_break == '\n': + # if not breaks: + # if self.peek() not in ' \t': + # chunks.append(' ') + # else: + # chunks.append(line_break) + #else: + # chunks.append(line_break) + else: + break + + # Chomp the tail. + if chomping is not False: + chunks.append(line_break) + if chomping is True: + chunks.extend(breaks) + + # We are done. + return ScalarToken(''.join(chunks), False, start_mark, end_mark, + style) + + def scan_block_scalar_indicators(self, start_mark): + # See the specification for details. + chomping = None + increment = None + ch = self.peek() + if ch in '+-': + if ch == '+': + chomping = True + else: + chomping = False + self.forward() + ch = self.peek() + if ch in '0123456789': + increment = int(ch) + if increment == 0: + raise ScannerError("while scanning a block scalar", start_mark, + "expected indentation indicator in the range 1-9, but found 0", + self.get_mark()) + self.forward() + elif ch in '0123456789': + increment = int(ch) + if increment == 0: + raise ScannerError("while scanning a block scalar", start_mark, + "expected indentation indicator in the range 1-9, but found 0", + self.get_mark()) + self.forward() + ch = self.peek() + if ch in '+-': + if ch == '+': + chomping = True + else: + chomping = False + self.forward() + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a block scalar", start_mark, + "expected chomping or indentation indicators, but found %r" + % ch, self.get_mark()) + return chomping, increment + + def scan_block_scalar_ignored_line(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + if self.peek() == '#': + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + ch = self.peek() + if ch not in '\0\r\n\x85\u2028\u2029': + raise ScannerError("while scanning a block scalar", start_mark, + "expected a comment or a line break, but found %r" % ch, + self.get_mark()) + self.scan_line_break() + + def scan_block_scalar_indentation(self): + # See the specification for details. + chunks = [] + max_indent = 0 + end_mark = self.get_mark() + while self.peek() in ' \r\n\x85\u2028\u2029': + if self.peek() != ' ': + chunks.append(self.scan_line_break()) + end_mark = self.get_mark() + else: + self.forward() + if self.column > max_indent: + max_indent = self.column + return chunks, max_indent, end_mark + + def scan_block_scalar_breaks(self, indent): + # See the specification for details. + chunks = [] + end_mark = self.get_mark() + while self.column < indent and self.peek() == ' ': + self.forward() + while self.peek() in '\r\n\x85\u2028\u2029': + chunks.append(self.scan_line_break()) + end_mark = self.get_mark() + while self.column < indent and self.peek() == ' ': + self.forward() + return chunks, end_mark + + def scan_flow_scalar(self, style): + # See the specification for details. + # Note that we loose indentation rules for quoted scalars. Quoted + # scalars don't need to adhere indentation because " and ' clearly + # mark the beginning and the end of them. Therefore we are less + # restrictive then the specification requires. We only need to check + # that document separators are not included in scalars. + if style == '"': + double = True + else: + double = False + chunks = [] + start_mark = self.get_mark() + quote = self.peek() + self.forward() + chunks.extend(self.scan_flow_scalar_non_spaces(double, start_mark)) + while self.peek() != quote: + chunks.extend(self.scan_flow_scalar_spaces(double, start_mark)) + chunks.extend(self.scan_flow_scalar_non_spaces(double, start_mark)) + self.forward() + end_mark = self.get_mark() + return ScalarToken(''.join(chunks), False, start_mark, end_mark, + style) + + ESCAPE_REPLACEMENTS = { + '0': '\0', + 'a': '\x07', + 'b': '\x08', + 't': '\x09', + '\t': '\x09', + 'n': '\x0A', + 'v': '\x0B', + 'f': '\x0C', + 'r': '\x0D', + 'e': '\x1B', + ' ': '\x20', + '\"': '\"', + '\\': '\\', + '/': '/', + 'N': '\x85', + '_': '\xA0', + 'L': '\u2028', + 'P': '\u2029', + } + + ESCAPE_CODES = { + 'x': 2, + 'u': 4, + 'U': 8, + } + + def scan_flow_scalar_non_spaces(self, double, start_mark): + # See the specification for details. + chunks = [] + while True: + length = 0 + while self.peek(length) not in '\'\"\\\0 \t\r\n\x85\u2028\u2029': + length += 1 + if length: + chunks.append(self.prefix(length)) + self.forward(length) + ch = self.peek() + if not double and ch == '\'' and self.peek(1) == '\'': + chunks.append('\'') + self.forward(2) + elif (double and ch == '\'') or (not double and ch in '\"\\'): + chunks.append(ch) + self.forward() + elif double and ch == '\\': + self.forward() + ch = self.peek() + if ch in self.ESCAPE_REPLACEMENTS: + chunks.append(self.ESCAPE_REPLACEMENTS[ch]) + self.forward() + elif ch in self.ESCAPE_CODES: + length = self.ESCAPE_CODES[ch] + self.forward() + for k in range(length): + if self.peek(k) not in '0123456789ABCDEFabcdef': + raise ScannerError("while scanning a double-quoted scalar", start_mark, + "expected escape sequence of %d hexdecimal numbers, but found %r" % + (length, self.peek(k)), self.get_mark()) + code = int(self.prefix(length), 16) + chunks.append(chr(code)) + self.forward(length) + elif ch in '\r\n\x85\u2028\u2029': + self.scan_line_break() + chunks.extend(self.scan_flow_scalar_breaks(double, start_mark)) + else: + raise ScannerError("while scanning a double-quoted scalar", start_mark, + "found unknown escape character %r" % ch, self.get_mark()) + else: + return chunks + + def scan_flow_scalar_spaces(self, double, start_mark): + # See the specification for details. + chunks = [] + length = 0 + while self.peek(length) in ' \t': + length += 1 + whitespaces = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch == '\0': + raise ScannerError("while scanning a quoted scalar", start_mark, + "found unexpected end of stream", self.get_mark()) + elif ch in '\r\n\x85\u2028\u2029': + line_break = self.scan_line_break() + breaks = self.scan_flow_scalar_breaks(double, start_mark) + if line_break != '\n': + chunks.append(line_break) + elif not breaks: + chunks.append(' ') + chunks.extend(breaks) + else: + chunks.append(whitespaces) + return chunks + + def scan_flow_scalar_breaks(self, double, start_mark): + # See the specification for details. + chunks = [] + while True: + # Instead of checking indentation, we check for document + # separators. + prefix = self.prefix(3) + if (prefix == '---' or prefix == '...') \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + raise ScannerError("while scanning a quoted scalar", start_mark, + "found unexpected document separator", self.get_mark()) + while self.peek() in ' \t': + self.forward() + if self.peek() in '\r\n\x85\u2028\u2029': + chunks.append(self.scan_line_break()) + else: + return chunks + + def scan_plain(self): + # See the specification for details. + # We add an additional restriction for the flow context: + # plain scalars in the flow context cannot contain ',' or '?'. + # We also keep track of the `allow_simple_key` flag here. + # Indentation rules are loosed for the flow context. + chunks = [] + start_mark = self.get_mark() + end_mark = start_mark + indent = self.indent+1 + # We allow zero indentation for scalars, but then we need to check for + # document separators at the beginning of the line. + #if indent == 0: + # indent = 1 + spaces = [] + while True: + length = 0 + if self.peek() == '#': + break + while True: + ch = self.peek(length) + if ch in '\0 \t\r\n\x85\u2028\u2029' \ + or (ch == ':' and + self.peek(length+1) in '\0 \t\r\n\x85\u2028\u2029' + + (u',[]{}' if self.flow_level else u''))\ + or (self.flow_level and ch in ',?[]{}'): + break + length += 1 + if length == 0: + break + self.allow_simple_key = False + chunks.extend(spaces) + chunks.append(self.prefix(length)) + self.forward(length) + end_mark = self.get_mark() + spaces = self.scan_plain_spaces(indent, start_mark) + if not spaces or self.peek() == '#' \ + or (not self.flow_level and self.column < indent): + break + return ScalarToken(''.join(chunks), True, start_mark, end_mark) + + def scan_plain_spaces(self, indent, start_mark): + # See the specification for details. + # The specification is really confusing about tabs in plain scalars. + # We just forbid them completely. Do not use tabs in YAML! + chunks = [] + length = 0 + while self.peek(length) in ' ': + length += 1 + whitespaces = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch in '\r\n\x85\u2028\u2029': + line_break = self.scan_line_break() + self.allow_simple_key = True + prefix = self.prefix(3) + if (prefix == '---' or prefix == '...') \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return + breaks = [] + while self.peek() in ' \r\n\x85\u2028\u2029': + if self.peek() == ' ': + self.forward() + else: + breaks.append(self.scan_line_break()) + prefix = self.prefix(3) + if (prefix == '---' or prefix == '...') \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return + if line_break != '\n': + chunks.append(line_break) + elif not breaks: + chunks.append(' ') + chunks.extend(breaks) + elif whitespaces: + chunks.append(whitespaces) + return chunks + + def scan_tag_handle(self, name, start_mark): + # See the specification for details. + # For some strange reasons, the specification does not allow '_' in + # tag handles. I have allowed it anyway. + ch = self.peek() + if ch != '!': + raise ScannerError("while scanning a %s" % name, start_mark, + "expected '!', but found %r" % ch, self.get_mark()) + length = 1 + ch = self.peek(length) + if ch != ' ': + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_': + length += 1 + ch = self.peek(length) + if ch != '!': + self.forward(length) + raise ScannerError("while scanning a %s" % name, start_mark, + "expected '!', but found %r" % ch, self.get_mark()) + length += 1 + value = self.prefix(length) + self.forward(length) + return value + + def scan_tag_uri(self, name, start_mark): + # See the specification for details. + # Note: we do not check if URI is well-formed. + chunks = [] + length = 0 + ch = self.peek(length) + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-;/?:@&=+$,_.!~*\'()[]%': + if ch == '%': + chunks.append(self.prefix(length)) + self.forward(length) + length = 0 + chunks.append(self.scan_uri_escapes(name, start_mark)) + else: + length += 1 + ch = self.peek(length) + if length: + chunks.append(self.prefix(length)) + self.forward(length) + length = 0 + if not chunks: + raise ScannerError("while parsing a %s" % name, start_mark, + "expected URI, but found %r" % ch, self.get_mark()) + return ''.join(chunks) + + def scan_uri_escapes(self, name, start_mark): + # See the specification for details. + codes = [] + mark = self.get_mark() + while self.peek() == '%': + self.forward() + for k in range(2): + if self.peek(k) not in '0123456789ABCDEFabcdef': + raise ScannerError("while scanning a %s" % name, start_mark, + "expected URI escape sequence of 2 hexdecimal numbers, but found %r" + % self.peek(k), self.get_mark()) + codes.append(int(self.prefix(2), 16)) + self.forward(2) + try: + value = bytes(codes).decode('utf-8') + except UnicodeDecodeError as exc: + raise ScannerError("while scanning a %s" % name, start_mark, str(exc), mark) + return value + + def scan_line_break(self): + # Transforms: + # '\r\n' : '\n' + # '\r' : '\n' + # '\n' : '\n' + # '\x85' : '\n' + # '\u2028' : '\u2028' + # '\u2029 : '\u2029' + # default : '' + ch = self.peek() + if ch in '\r\n\x85': + if self.prefix(2) == '\r\n': + self.forward(2) + else: + self.forward() + return '\n' + elif ch in '\u2028\u2029': + self.forward() + return ch + return '' diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/serializer.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/serializer.py new file mode 100644 index 00000000..fe911e67 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/serializer.py @@ -0,0 +1,111 @@ + +__all__ = ['Serializer', 'SerializerError'] + +from .error import YAMLError +from .events import * +from .nodes import * + +class SerializerError(YAMLError): + pass + +class Serializer: + + ANCHOR_TEMPLATE = 'id%03d' + + def __init__(self, encoding=None, + explicit_start=None, explicit_end=None, version=None, tags=None): + self.use_encoding = encoding + self.use_explicit_start = explicit_start + self.use_explicit_end = explicit_end + self.use_version = version + self.use_tags = tags + self.serialized_nodes = {} + self.anchors = {} + self.last_anchor_id = 0 + self.closed = None + + def open(self): + if self.closed is None: + self.emit(StreamStartEvent(encoding=self.use_encoding)) + self.closed = False + elif self.closed: + raise SerializerError("serializer is closed") + else: + raise SerializerError("serializer is already opened") + + def close(self): + if self.closed is None: + raise SerializerError("serializer is not opened") + elif not self.closed: + self.emit(StreamEndEvent()) + self.closed = True + + #def __del__(self): + # self.close() + + def serialize(self, node): + if self.closed is None: + raise SerializerError("serializer is not opened") + elif self.closed: + raise SerializerError("serializer is closed") + self.emit(DocumentStartEvent(explicit=self.use_explicit_start, + version=self.use_version, tags=self.use_tags)) + self.anchor_node(node) + self.serialize_node(node, None, None) + self.emit(DocumentEndEvent(explicit=self.use_explicit_end)) + self.serialized_nodes = {} + self.anchors = {} + self.last_anchor_id = 0 + + def anchor_node(self, node): + if node in self.anchors: + if self.anchors[node] is None: + self.anchors[node] = self.generate_anchor(node) + else: + self.anchors[node] = None + if isinstance(node, SequenceNode): + for item in node.value: + self.anchor_node(item) + elif isinstance(node, MappingNode): + for key, value in node.value: + self.anchor_node(key) + self.anchor_node(value) + + def generate_anchor(self, node): + self.last_anchor_id += 1 + return self.ANCHOR_TEMPLATE % self.last_anchor_id + + def serialize_node(self, node, parent, index): + alias = self.anchors[node] + if node in self.serialized_nodes: + self.emit(AliasEvent(alias)) + else: + self.serialized_nodes[node] = True + self.descend_resolver(parent, index) + if isinstance(node, ScalarNode): + detected_tag = self.resolve(ScalarNode, node.value, (True, False)) + default_tag = self.resolve(ScalarNode, node.value, (False, True)) + implicit = (node.tag == detected_tag), (node.tag == default_tag) + self.emit(ScalarEvent(alias, node.tag, implicit, node.value, + style=node.style)) + elif isinstance(node, SequenceNode): + implicit = (node.tag + == self.resolve(SequenceNode, node.value, True)) + self.emit(SequenceStartEvent(alias, node.tag, implicit, + flow_style=node.flow_style)) + index = 0 + for item in node.value: + self.serialize_node(item, node, index) + index += 1 + self.emit(SequenceEndEvent()) + elif isinstance(node, MappingNode): + implicit = (node.tag + == self.resolve(MappingNode, node.value, True)) + self.emit(MappingStartEvent(alias, node.tag, implicit, + flow_style=node.flow_style)) + for key, value in node.value: + self.serialize_node(key, node, None) + self.serialize_node(value, node, key) + self.emit(MappingEndEvent()) + self.ascend_resolver() + diff --git a/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/tokens.py b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/tokens.py new file mode 100644 index 00000000..4d0b48a3 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/charms/virtual-pc/venv/yaml/tokens.py @@ -0,0 +1,104 @@ + +class Token(object): + def __init__(self, start_mark, end_mark): + self.start_mark = start_mark + self.end_mark = end_mark + def __repr__(self): + attributes = [key for key in self.__dict__ + if not key.endswith('_mark')] + attributes.sort() + arguments = ', '.join(['%s=%r' % (key, getattr(self, key)) + for key in attributes]) + return '%s(%s)' % (self.__class__.__name__, arguments) + +#class BOMToken(Token): +# id = '<byte order mark>' + +class DirectiveToken(Token): + id = '<directive>' + def __init__(self, name, value, start_mark, end_mark): + self.name = name + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + +class DocumentStartToken(Token): + id = '<document start>' + +class DocumentEndToken(Token): + id = '<document end>' + +class StreamStartToken(Token): + id = '<stream start>' + def __init__(self, start_mark=None, end_mark=None, + encoding=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.encoding = encoding + +class StreamEndToken(Token): + id = '<stream end>' + +class BlockSequenceStartToken(Token): + id = '<block sequence start>' + +class BlockMappingStartToken(Token): + id = '<block mapping start>' + +class BlockEndToken(Token): + id = '<block end>' + +class FlowSequenceStartToken(Token): + id = '[' + +class FlowMappingStartToken(Token): + id = '{' + +class FlowSequenceEndToken(Token): + id = ']' + +class FlowMappingEndToken(Token): + id = '}' + +class KeyToken(Token): + id = '?' + +class ValueToken(Token): + id = ':' + +class BlockEntryToken(Token): + id = '-' + +class FlowEntryToken(Token): + id = ',' + +class AliasToken(Token): + id = '<alias>' + def __init__(self, value, start_mark, end_mark): + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + +class AnchorToken(Token): + id = '<anchor>' + def __init__(self, value, start_mark, end_mark): + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + +class TagToken(Token): + id = '<tag>' + def __init__(self, value, start_mark, end_mark): + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + +class ScalarToken(Token): + id = '<scalar>' + def __init__(self, value, plain, start_mark, end_mark, style=None): + self.value = value + self.plain = plain + self.start_mark = start_mark + self.end_mark = end_mark + self.style = style + diff --git a/hackfest_virtual-pc_vnfd/cloud_init/virtual-pc_init b/hackfest_virtual-pc_vnfd/cloud_init/virtual-pc_init new file mode 100644 index 00000000..a9acf627 --- /dev/null +++ b/hackfest_virtual-pc_vnfd/cloud_init/virtual-pc_init @@ -0,0 +1,4 @@ +#cloud-config +password: osm2020 +chpasswd: { expire: False } +ssh_pwauth: True diff --git a/hackfest_virtual-pc_vnfd/virtual-pc_vnfd.yaml b/hackfest_virtual-pc_vnfd/virtual-pc_vnfd.yaml new file mode 100644 index 00000000..49e4b4cf --- /dev/null +++ b/hackfest_virtual-pc_vnfd/virtual-pc_vnfd.yaml @@ -0,0 +1,66 @@ +vnfd: + description: Virtual Desktop Computer with Xubuntu Desktop and RDP + df: + - id: default-df + instantiation-level: + - id: default-instantiation-level + vdu-level: + - number-of-instances: 1 + vdu-id: virtual-pc + vdu-profile: + - id: virtual-pc + min-number-of-instances: 1 + vdu-configuration-id: virtual-pc-vdu-configuration + ext-cpd: + - id: virtual-pc-mgmt-ext + int-cpd: + cpd: eth0-int + vdu-id: virtual-pc + id: virtual-pc_vnfd + mgmt-cp: virtual-pc-mgmt-ext + product-name: virtual-pc_vnfd + provider: Canonical + sw-image-desc: + - id: ubuntu20.04 + image: ubuntu20.04 + name: ubuntu20.04 + vdu: + - cloud-init-file: virtual-pc_init + description: virtual-pc + id: virtual-pc + int-cpd: + - id: eth0-int + virtual-network-interface-requirement: + - name: eth0 + virtual-interface: + type: PARAVIRT + name: virtual-pc-vdu + sw-image-desc: ubuntu20.04 + virtual-compute-desc: virtual-pc-vdu-compute + virtual-storage-desc: + - virtual-pc-vdu-storage + vdu-configuration: + - id: virtual-pc-vdu-configuration + config-access: + ssh-access: + required: true + config-access: + ssh-access: + default-user: ubuntu + required: true + initial-config-primitive: + - name: config + seq: '1' + juju: + charm: virtual-pc + proxy: false + version: '1.0' + virtual-compute-desc: + - id: virtual-pc-vdu-compute + virtual-cpu: + num-virtual-cpu: 4 + virtual-memory: + size: 8.0 + virtual-storage-desc: + - id: virtual-pc-vdu-storage + size-of-storage: 20 -- GitLab