From 5b953bb5ede9fd763269390fca86d37fefb64967 Mon Sep 17 00:00:00 2001 From: Sebastian Rieger Date: Tue, 21 Apr 2020 15:46:58 +0200 Subject: [PATCH] added faafo example --- faafo/.gitignore | 14 + faafo/CONTRIBUTING.rst | 16 ++ faafo/LICENSE | 202 +++++++++++++ faafo/README.rst | 30 ++ faafo/Vagrantfile | 49 ++++ faafo/bin/faafo | 267 ++++++++++++++++++ faafo/bin/faafo-worker | 52 ++++ faafo/contrib/install.sh | 198 +++++++++++++ faafo/contrib/test_api.py | 56 ++++ faafo/doc/source/conf.py | 17 ++ faafo/doc/source/development.rst | 68 +++++ faafo/doc/source/images/diagram.dot | 15 + faafo/doc/source/images/diagram.png | Bin 0 -> 36032 bytes faafo/doc/source/images/dot2png.sh | 3 + faafo/doc/source/images/example.png | Bin 0 -> 40542 bytes .../source/images/screenshot_webinterface.png | Bin 0 -> 207211 bytes faafo/doc/source/implementation.rst | 11 + faafo/doc/source/index.rst | 14 + faafo/doc/source/installation.rst | 8 + faafo/doc/source/references.rst | 6 + faafo/doc/source/usage.rst | 42 +++ faafo/doc/source/workflow.rst | 4 + faafo/etc/faafo.conf | 110 ++++++++ faafo/etc/faafo.conf.sample | 125 ++++++++ faafo/etc/oslo-config-generator/faafo.conf | 6 + faafo/faafo/__init__.py | 0 faafo/faafo/api/__init__.py | 0 faafo/faafo/api/service.py | 146 ++++++++++ faafo/faafo/api/templates/index.html | 60 ++++ faafo/faafo/queues.py | 32 +++ faafo/faafo/version.py | 15 + faafo/faafo/worker/__init__.py | 0 faafo/faafo/worker/service.py | 156 ++++++++++ faafo/requirements.txt | 17 ++ faafo/setup.cfg | 54 ++++ faafo/setup.py | 29 ++ faafo/test-requirements.txt | 2 + faafo/tox.ini | 27 ++ 38 files changed, 1851 insertions(+) create mode 100644 faafo/.gitignore create mode 100644 faafo/CONTRIBUTING.rst create mode 100644 faafo/LICENSE create mode 100644 faafo/README.rst create mode 100644 faafo/Vagrantfile create mode 100644 faafo/bin/faafo create mode 100644 faafo/bin/faafo-worker create mode 100644 faafo/contrib/install.sh create mode 100644 faafo/contrib/test_api.py create mode 100644 faafo/doc/source/conf.py create mode 100644 faafo/doc/source/development.rst create mode 100644 faafo/doc/source/images/diagram.dot create mode 100644 faafo/doc/source/images/diagram.png create mode 100644 faafo/doc/source/images/dot2png.sh create mode 100644 faafo/doc/source/images/example.png create mode 100644 faafo/doc/source/images/screenshot_webinterface.png create mode 100644 faafo/doc/source/implementation.rst create mode 100644 faafo/doc/source/index.rst create mode 100644 faafo/doc/source/installation.rst create mode 100644 faafo/doc/source/references.rst create mode 100644 faafo/doc/source/usage.rst create mode 100644 faafo/doc/source/workflow.rst create mode 100644 faafo/etc/faafo.conf create mode 100644 faafo/etc/faafo.conf.sample create mode 100644 faafo/etc/oslo-config-generator/faafo.conf create mode 100644 faafo/faafo/__init__.py create mode 100644 faafo/faafo/api/__init__.py create mode 100644 faafo/faafo/api/service.py create mode 100644 faafo/faafo/api/templates/index.html create mode 100644 faafo/faafo/queues.py create mode 100644 faafo/faafo/version.py create mode 100644 faafo/faafo/worker/__init__.py create mode 100644 faafo/faafo/worker/service.py create mode 100644 faafo/requirements.txt create mode 100644 faafo/setup.cfg create mode 100644 faafo/setup.py create mode 100644 faafo/test-requirements.txt create mode 100644 faafo/tox.ini diff --git a/faafo/.gitignore b/faafo/.gitignore new file mode 100644 index 0000000..a2a99f9 --- /dev/null +++ b/faafo/.gitignore @@ -0,0 +1,14 @@ +.tox +.vagrant +*.pyc +.venv +*.egg-info +*.egg +.eggs +.*.swp +build +*.log +*.png +AUTHORS +ChangeLog +dist diff --git a/faafo/CONTRIBUTING.rst b/faafo/CONTRIBUTING.rst new file mode 100644 index 0000000..73cc4a8 --- /dev/null +++ b/faafo/CONTRIBUTING.rst @@ -0,0 +1,16 @@ +If you would like to contribute to the development of OpenStack, +you must follow the steps documented at: + + http://docs.openstack.org/infra/manual/developers.html#getting-started + +Once those steps have been completed, changes to OpenStack +should be submitted for review via the Gerrit tool, following +the workflow documented at: + + http://docs.openstack.org/infra/manual/developers.html#development-workflow + +Pull requests submitted through GitHub will be ignored. + +Bugs should be filed on Launchpad, not GitHub: + + https://bugs.launchpad.net/faafo diff --git a/faafo/LICENSE b/faafo/LICENSE new file mode 100644 index 0000000..e06d208 --- /dev/null +++ b/faafo/LICENSE @@ -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/faafo/README.rst b/faafo/README.rst new file mode 100644 index 0000000..ab13310 --- /dev/null +++ b/faafo/README.rst @@ -0,0 +1,30 @@ +Local copy of the former faafo OpenStack Tutorial from developer.openstack.org + +======================== +Team and repository tags +======================== + +.. image:: http://governance.openstack.org/badges/faafo.svg + :target: http://governance.openstack.org/reference/tags/index.html + +.. Change things from this point on + +=========================================== +First App Application for OpenStack (faafo) +=========================================== + +Developer documentation, the source of which is in ``doc/source/``, is +published at: + + http://docs.openstack.org/developer/faafo/ + +Bugs and feature requests are tracked on Launchpad at: + + https://bugs.launchpad.net/faafo + +Contributors are encouraged to join IRC (``#openstackfirstapp`` on freenode): + + https://wiki.openstack.org/wiki/IRC + +For information on contributing to the First App Application for OpenStack, +see ``CONTRIBUTING.rst``. diff --git a/faafo/Vagrantfile b/faafo/Vagrantfile new file mode 100644 index 0000000..8e5a603 --- /dev/null +++ b/faafo/Vagrantfile @@ -0,0 +1,49 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# 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. + +Vagrant.configure(2) do |config| + config.vm.box = 'ubuntu/trusty64' + config.vm.provider 'virtualbox' do |vb| + vb.memory = 1024 + vb.cpus = 1 + end + config.ssh.shell = 'bash -c "BASH_ENV=/etc/profile exec bash"' + config.cache.scope = :box if Vagrant.has_plugin?('vagrant-cachier') + config.vm.provision "shell", + inline: "apt-get update && apt-get upgrade -y" + + config.vm.define "services", primary: true do |node| + node.vm.hostname= "services" + node.vm.network :private_network, ip: '10.0.88.10' + node.vm.provision "shell", + inline: "/vagrant/contrib/install.sh -i messaging -i database" + node.vm.network 'forwarded_port', guest: 15_672, host: 15_672 + end + + config.vm.define "api" do |node| + node.vm.hostname= "api" + node.vm.network :private_network, ip: '10.0.88.20' + node.vm.provision "shell", + inline: "/vagrant/contrib/install.sh -i faafo -r api -d 'mysql://faafo:password@10.0.88.10:3306/faafo' -m 'amqp://guest:guest@10.0.88.10:5672/'" + node.vm.network 'forwarded_port', guest: 80, host: 1080 + end + + config.vm.define "worker" do |node| + node.vm.hostname= "worker" + node.vm.network :private_network, ip: '10.0.88.30' + node.vm.provision "shell", + inline: "/vagrant/contrib/install.sh -i faafo -r worker -m 'amqp://guest:guest@10.0.88.10:5672/' -e 'http://10.0.88.20'" + end +end diff --git a/faafo/bin/faafo b/faafo/bin/faafo new file mode 100644 index 0000000..a12770d --- /dev/null +++ b/faafo/bin/faafo @@ -0,0 +1,267 @@ +#!/usr/bin/env python + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import copy +import json +import random +import uuid + +from oslo_config import cfg +from oslo_log import log +from prettytable import PrettyTable +import requests + +from faafo import version + + +LOG = log.getLogger('faafo.client') +CONF = cfg.CONF + + +def get_random_task(): + random.seed() + + if CONF.command.width: + width = int(CONF.command.width) + else: + width = random.randint(int(CONF.command.min_width), + int(CONF.command.max_width)) + + if CONF.command.height: + height = int(CONF.command.height) + else: + height = random.randint(int(CONF.command.min_height), + int(CONF.command.max_height)) + + if CONF.command.iterations: + iterations = int(CONF.command.iterations) + else: + iterations = random.randint(int(CONF.command.min_iterations), + int(CONF.command.max_iterations)) + + if CONF.command.xa: + xa = float(CONF.command.xa) + else: + xa = random.uniform(float(CONF.command.min_xa), + float(CONF.command.max_xa)) + + if CONF.command.xb: + xb = float(CONF.command.xb) + else: + xb = random.uniform(float(CONF.command.min_xb), + float(CONF.command.max_xb)) + + if CONF.command.ya: + ya = float(CONF.command.ya) + else: + ya = random.uniform(float(CONF.command.min_ya), + float(CONF.command.max_ya)) + + if CONF.command.yb: + yb = float(CONF.command.yb) + else: + yb = random.uniform(float(CONF.command.min_yb), + float(CONF.command.max_yb)) + + task = { + 'uuid': str(uuid.uuid4()), + 'width': width, + 'height': height, + 'iterations': iterations, 'xa': xa, + 'xb': xb, + 'ya': ya, + 'yb': yb + } + + return task + + +def do_get_fractal(): + LOG.error("command 'download' not yet implemented") + + +def do_show_fractal(): + LOG.info("showing fractal %s" % CONF.command.uuid) + result = requests.get("%s/v1/fractal/%s" % + (CONF.endpoint_url, CONF.command.uuid)) + if result.status_code == 200: + data = json.loads(result.text) + output = PrettyTable(["Parameter", "Value"]) + output.align["Parameter"] = "l" + output.align["Value"] = "l" + output.add_row(["uuid", data['uuid']]) + output.add_row(["duration", "%f seconds" % data['duration']]) + output.add_row(["dimensions", "%d x %d pixels" % + (data['width'], data['height'])]) + output.add_row(["iterations", data['iterations']]) + output.add_row(["xa", data['xa']]) + output.add_row(["xb", data['xb']]) + output.add_row(["ya", data['ya']]) + output.add_row(["yb", data['yb']]) + output.add_row(["size", "%d bytes" % data['size']]) + output.add_row(["checksum", data['checksum']]) + output.add_row(["generated_by", data['generated_by']]) + print(output) + else: + LOG.error("fractal '%s' not found" % CONF.command.uuid) + + +def do_list_fractals(): + LOG.info("listing all fractals") + + fractals = get_fractals() + output = PrettyTable(["UUID", "Dimensions", "Filesize"]) + for fractal in fractals: + output.add_row([ + fractal["uuid"], + "%d x %d pixels" % (fractal["width"], fractal["height"]), + "%d bytes" % (fractal["size"] or 0), + ]) + print(output) + + +def get_fractals(page=1): + result = requests.get("%s/v1/fractal?page=%d" % + (CONF.endpoint_url, page)) + + fractals = [] + if result.status_code == 200: + data = json.loads(result.text) + if page < data['total_pages']: + fractals = data['objects'] + get_fractals(page + 1) + else: + return data['objects'] + + return fractals + + +def do_delete_fractal(): + LOG.info("deleting fractal %s" % CONF.command.uuid) + result = requests.delete("%s/v1/fractal/%s" % + (CONF.endpoint_url, CONF.command.uuid)) + LOG.debug("result: %s" %result) + + +def do_create_fractal(): + random.seed() + if CONF.command.tasks: + number = int(CONF.command.tasks) + else: + number = random.randint(int(CONF.command.min_tasks), + int(CONF.command.max_tasks)) + LOG.info("generating %d task(s)" % number) + for i in xrange(0, number): + task = get_random_task() + LOG.debug("created task %s" % task) + # NOTE(berendt): only necessary when using requests < 2.4.2 + headers = {'Content-type': 'application/json', + 'Accept': 'text/plain'} + requests.post("%s/v1/fractal" % CONF.endpoint_url, + json.dumps(task), headers=headers) + + +def add_command_parsers(subparsers): + parser = subparsers.add_parser('create') + parser.set_defaults(func=do_create_fractal) + parser.add_argument("--height", default=None, + help="The height of the generate image.") + parser.add_argument("--min-height", default=256, + help="The minimum height of the generate image.") + parser.add_argument("--max-height", default=1024, + help="The maximum height of the generate image.") + parser.add_argument("--width", default=None, + help="The width of the generated image.") + parser.add_argument("--min-width", default=256, + help="The minimum width of the generated image.") + parser.add_argument("--max-width", default=1024, + help="The maximum width of the generated image.") + parser.add_argument("--iterations", default=None, + help="The number of iterations.") + parser.add_argument("--min-iterations", default=128, + help="The minimum number of iterations.") + parser.add_argument("--max-iterations", default=512, + help="The maximum number of iterations.") + parser.add_argument("--tasks", default=None, + help="The number of generated fractals.") + parser.add_argument("--min-tasks", default=1, + help="The minimum number of generated fractals.") + parser.add_argument("--max-tasks", default=10, + help="The maximum number of generated fractals.") + parser.add_argument("--xa", default=None, + help="The value for the parameter 'xa'.") + parser.add_argument("--min-xa", default=-1.0, + help="The minimum value for the parameter 'xa'.") + parser.add_argument("--max-xa", default=-4.0, + help="The maximum value for the parameter 'xa'.") + parser.add_argument("--xb", default=None, + help="The value for the parameter 'xb'.") + parser.add_argument("--min-xb", default=1.0, + help="The minimum value for the parameter 'xb'.") + parser.add_argument("--max-xb", default=4.0, + help="The maximum value for the parameter 'xb'.") + parser.add_argument("--ya", default=None, + help="The value for the parameter 'ya'.") + parser.add_argument("--min-ya", default=-0.5, + help="The minimum value for the parameter 'ya'.") + parser.add_argument("--max-ya", default=-3, + help="The maximum value for the parameter 'ya'.") + parser.add_argument("--yb", default=None, + help="The value for the parameter 'yb'.") + parser.add_argument("--min-yb", default=0.5, + help="The minimum value for the parameter 'yb'.") + parser.add_argument("--max-yb", default=3, + help="The maximum value for the parameter 'yb'.") + + parser = subparsers.add_parser('delete') + parser.set_defaults(func=do_delete_fractal) + parser.add_argument("uuid", help="Fractal to delete.") + + parser = subparsers.add_parser('show') + parser.set_defaults(func=do_show_fractal) + parser.add_argument("uuid", help="Fractal to show.") + + parser = subparsers.add_parser('get') + parser.set_defaults(func=do_get_fractal) + parser.add_argument("uuid", help="Fractal to download.") + + parser = subparsers.add_parser('list') + parser.set_defaults(func=do_list_fractals) + + +client_commands = cfg.SubCommandOpt('command', title='Commands', + help='Show available commands.', + handler=add_command_parsers) + +CONF.register_cli_opts([client_commands]) + +client_cli_opts = [ + cfg.StrOpt('endpoint-url', + default='http://localhost', + help='API connection URL') +] + +CONF.register_cli_opts(client_cli_opts) + + +if __name__ == '__main__': + log.register_options(CONF) + log.set_defaults() + + CONF(project='client', prog='faafo-client', + version=version.version_info.version_string()) + + log.setup(CONF, 'client', + version=version.version_info.version_string()) + + CONF.command.func() diff --git a/faafo/bin/faafo-worker b/faafo/bin/faafo-worker new file mode 100644 index 0000000..67daf0b --- /dev/null +++ b/faafo/bin/faafo-worker @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import os +import sys + +import kombu +from oslo_config import cfg +from oslo_log import log + +from faafo.worker import service as worker +from faafo import version + +LOG = log.getLogger('faafo.worker') +CONF = cfg.CONF + +# If ../faafo/__init__.py exists, add ../ to Python search path, so that +# it will override what happens to be installed in /usr/(local/)lib/python... +possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), + os.pardir, + os.pardir)) +if os.path.exists(os.path.join(possible_topdir, 'faafo', '__init__.py')): + sys.path.insert(0, possible_topdir) + +if __name__ == '__main__': + log.register_options(CONF) + log.set_defaults() + + CONF(project='worker', prog='faafo-worker', + default_config_files=['/etc/faafo/faafo.conf'], + version=version.version_info.version_string()) + + log.setup(CONF, 'worker', + version=version.version_info.version_string()) + + connection = kombu.Connection(CONF.transport_url) + server = worker.Worker(connection) + try: + server.run() + except KeyboardInterrupt: + LOG.info("Caught keyboard interrupt. Exiting.") diff --git a/faafo/contrib/install.sh b/faafo/contrib/install.sh new file mode 100644 index 0000000..63e2d37 --- /dev/null +++ b/faafo/contrib/install.sh @@ -0,0 +1,198 @@ +#!/bin/bash + +# 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. + +if [[ -e /etc/os-release ]]; then + + # NOTE(berendt): support for CentOS/RHEL/openSUSE/SLES will be added in the future + + source /etc/os-release + + INSTALL_DATABASE=0 + INSTALL_FAAFO=0 + INSTALL_MESSAGING=0 + RUN_API=0 + RUN_DEMO=0 + RUN_WORKER=0 + URL_DATABASE='sqlite:////tmp/sqlite.db' + URL_ENDPOINT='http://127.0.0.1' + URL_MESSAGING='amqp://guest:guest@localhost:5672/' + + while getopts e:m:d:i:r: FLAG; do + case $FLAG in + i) + case $OPTARG in + messaging) + INSTALL_MESSAGING=1 + ;; + database) + INSTALL_DATABASE=1 + ;; + faafo) + INSTALL_FAAFO=1 + ;; + esac + ;; + r) + case $OPTARG in + demo) + RUN_DEMO=1 + ;; + api) + RUN_API=1 + ;; + worker) + RUN_WORKER=1 + ;; + esac + ;; + e) + URL_ENDPOINT=$OPTARG + ;; + + m) + URL_MESSAGING=$OPTARG + ;; + + d) + URL_DATABASE=$OPTARG + ;; + + *) + echo "error: unknown option $FLAG" + exit 1 + ;; + esac + done + + if [[ $ID = 'ubuntu' || $ID = 'debian' ]]; then + sudo apt-get update + elif [[ $ID = 'fedora' ]]; then + sudo dnf update -y + fi + + if [[ $INSTALL_DATABASE -eq 1 ]]; then + if [[ $ID = 'ubuntu' || $ID = 'debian' ]]; then + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server python-mysqldb + sudo sed -i -e "/bind-address/d" /etc/mysql/my.cnf + sudo service mysql restart + elif [[ $ID = 'fedora' ]]; then + sudo dnf install -y mariadb-server python-mysql + printf "[mysqld]\nbind-address = 127.0.0.1\n" | sudo tee /etc/my.cnf.d/faafo.conf + sudo systemctl enable mariadb + sudo systemctl start mariadb + else + echo "error: distribution $ID not supported" + exit 1 + fi + sudo mysqladmin password password + sudo mysql -uroot -ppassword mysql -e "CREATE DATABASE IF NOT EXISTS faafo; GRANT ALL PRIVILEGES ON faafo.* TO 'faafo'@'%' IDENTIFIED BY 'password';" + URL_DATABASE='mysql://root:password@localhost/faafo' + fi + + if [[ $INSTALL_MESSAGING -eq 1 ]]; then + if [[ $ID = 'ubuntu' || $ID = 'debian' ]]; then + sudo apt-get install -y rabbitmq-server + elif [[ $ID = 'fedora' ]]; then + sudo dnf install -y rabbitmq-server + sudo systemctl enable rabbitmq-server + sudo systemctl start rabbitmq-server + else + echo "error: distribution $ID not supported" + exit 1 + fi + fi + + if [[ $INSTALL_FAAFO -eq 1 ]]; then + if [[ $ID = 'ubuntu' || $ID = 'debian' ]]; then + sudo apt-get install -y python-dev python-pip supervisor git zlib1g-dev libmysqlclient-dev python-mysqldb + # Following is needed because of + # https://bugs.launchpad.net/ubuntu/+source/supervisor/+bug/1594740 + if [ $(lsb_release --short --codename) = xenial ]; then + # Make sure the daemon is enabled. + if ! systemctl --quiet is-enabled supervisor; then + systemctl enable supervisor + fi + # Make sure the daemon is started. + if ! systemctl --quiet is-active supervisor; then + systemctl start supervisor + fi + fi + elif [[ $ID = 'fedora' ]]; then + sudo dnf install -y python-devel python-pip supervisor git zlib-devel mariadb-devel gcc which python-mysql + sudo systemctl enable supervisord + sudo systemctl start supervisord + #elif [[ $ID = 'opensuse' || $ID = 'sles' ]]; then + # sudo zypper install -y python-devel python-pip + else + echo "error: distribution $ID not supported" + exit 1 + fi + + git clone https://git.openstack.org/openstack/faafo + cd faafo + # following line required by bug 1636150 + sudo pip install --upgrade pbr + sudo pip install -r requirements.txt + sudo python setup.py install + + sudo sed -i -e "s#transport_url = .*#transport_url = $URL_MESSAGING#" /etc/faafo/faafo.conf + sudo sed -i -e "s#database_url = .*#database_url = $URL_DATABASE#" /etc/faafo/faafo.conf + sudo sed -i -e "s#endpoint_url = .*#endpoint_url = $URL_ENDPOINT#" /etc/faafo/faafo.conf + fi + + + if [[ $RUN_API -eq 1 ]]; then + faafo_api=" +[program:faafo_api] +command=$(which faafo-api) +priority=10" + + if [[ $ID = 'ubuntu' || $ID = 'debian' ]]; then + echo "$faafo_api" | sudo tee -a /etc/supervisor/conf.d/faafo.conf + elif [[ $ID = 'fedora' ]]; then + echo "$faafo_api" | sudo tee -a /etc/supervisord.d/faafo.ini + else + echo "error: distribution $ID not supported" + exit 1 + fi + fi + + if [[ $RUN_WORKER -eq 1 ]]; then + faafo_worker=" +[program:faafo_worker] +command=$(which faafo-worker) +priority=20" + + if [[ $ID = 'ubuntu' || $ID = 'debian' ]]; then + echo "$faafo_worker" | sudo tee -a /etc/supervisor/conf.d/faafo.conf + elif [[ $ID = 'fedora' ]]; then + echo "$faafo_worker" | sudo tee -a /etc/supervisord.d/faafo.ini + else + echo "error: distribution $ID not supported" + exit 1 + fi + fi + + if [[ $RUN_WORKER -eq 1 || $RUN_API -eq 1 ]]; then + sudo supervisorctl reload + sleep 5 + fi + + if [[ $RUN_DEMO -eq 1 && $RUN_API -eq 1 ]]; then + faafo --endpoint-url $URL_ENDPOINT --debug create + fi + +else + exit 1 +fi diff --git a/faafo/contrib/test_api.py b/faafo/contrib/test_api.py new file mode 100644 index 0000000..559ac3d --- /dev/null +++ b/faafo/contrib/test_api.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import json +import requests + +url = 'http://127.0.0.1/api/fractal' +headers = {'Content-Type': 'application/json'} + +uuid = '13bf15a8-9f6c-4d59-956f-7d20f7484687' +data = { + 'uuid': uuid, + 'width': 100, + 'height': 100, + 'iterations': 10, + 'xa': 1.0, + 'xb': -1.0, + 'ya': 1.0, + 'yb': -1.0, +} +response = requests.post(url, data=json.dumps(data), headers=headers) +assert response.status_code == 201 + +response = requests.get(url, headers=headers) +assert response.status_code == 200 +print(response.json()) + +response = requests.get(url + '/' + uuid, headers=headers) +assert response.status_code == 200 +print(response.json()) + +data = { + 'checksum': 'c6fef4ef13a577066c2281b53c82ce2c7e94e', + 'duration': 10.12 +} +response = requests.put(url + '/' + uuid, data=json.dumps(data), + headers=headers) +assert response.status_code == 200 + +response = requests.get(url + '/' + uuid, headers=headers) +assert response.status_code == 200 +print(response.json()) + +response = requests.delete(url + '/' + uuid, headers=headers) +assert response.status_code == 204 diff --git a/faafo/doc/source/conf.py b/faafo/doc/source/conf.py new file mode 100644 index 0000000..d78328c --- /dev/null +++ b/faafo/doc/source/conf.py @@ -0,0 +1,17 @@ +# 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. + +copyright = u'2015, OpenStack contributors' +master_doc = 'index' +project = u'First App Application for OpenStack' +source_suffix = '.rst' diff --git a/faafo/doc/source/development.rst b/faafo/doc/source/development.rst new file mode 100644 index 0000000..c8fd05a --- /dev/null +++ b/faafo/doc/source/development.rst @@ -0,0 +1,68 @@ +Development +=========== + +Vagrant environment +------------------- + +The `Vagrant `_ environment and the `Ansible `_ +playbook is used only for local tests and development of the application. + +The installation of Vagrant is described at https://docs.vagrantup.com/v2/installation/index.html. + +To speedup the provisioning you can install the Vagrant plugin `vagrant-cachier `_. + +.. code:: + + $ vagrant plugin install vagrant-cachier + +Bootstrap the Vagrant environment. + +.. code:: + + $ vagrant up + +Now it is possible to login with SSH. + +.. code:: + + $ vagrant ssh + +Open a new screen or tmux session. Aftwards run the api, worker, and producer +services in the foreground, each service in a separate window. + +* :code:`faafo-api` +* :code:`faafo-worker` +* :code:`faafo-producer` + +RabbitMQ server +~~~~~~~~~~~~~~~ + +The webinterface of the RabbitMQ server is reachable on TCP port :code:`15672`. The login is +possible with the user :code:`guest` and the password :code:`guest`. + +MySQL server +~~~~~~~~~~~~ + +The password of the user :code:`root` is :code:`secretsecret`. The password of the user :code:`faafo` +for the database :code:`faafo` is also :code:`secretsecret`. + +Virtual environment +------------------- + +Create a new virtual environment, install all required dependencies and +the application itself. + +.. code:: + + $ virtualenv .venv + $ source .venv/bin/activate + $ pip install -r requirements.txt + $ python setup.py install + +Open a new screen or tmux session. Aftwards run the api and worker +services in the foreground, each service in a separate window. + +.. code:: + + $ source .venv/bin/activate; faafo-api + $ source .venv/bin/activate; faafo-worker diff --git a/faafo/doc/source/images/diagram.dot b/faafo/doc/source/images/diagram.dot new file mode 100644 index 0000000..f1689a9 --- /dev/null +++ b/faafo/doc/source/images/diagram.dot @@ -0,0 +1,15 @@ +digraph { + API -> Database [color=green]; + API -> Database [color=orange]; + Database -> API [color=red]; + API -> Webinterface [color=red]; + Producer -> API [color=orange]; + Producer -> API [color=green]; + Producer -> "Queue Service" [color=orange]; + "Queue Service" -> Worker [color=orange]; + Worker -> "Image File" [color=blue]; + Worker -> "Queue Service" [color=green]; + "Queue Service" -> Producer [color=green]; + "Image File" -> "Storage Backend" [color=blue]; + "Storage Backend" -> Webinterface [color=red]; +} diff --git a/faafo/doc/source/images/diagram.png b/faafo/doc/source/images/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..ea27612d02f0a625153b4232f15de283c84a621c GIT binary patch literal 36032 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 D9!~uk literal 0 HcmV?d00001 diff --git a/faafo/doc/source/images/dot2png.sh b/faafo/doc/source/images/dot2png.sh new file mode 100644 index 0000000..8ae913f --- /dev/null +++ b/faafo/doc/source/images/dot2png.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +dot -T png -o diagram.png diagram.dot diff --git a/faafo/doc/source/images/example.png b/faafo/doc/source/images/example.png new file mode 100644 index 0000000000000000000000000000000000000000..e840fc4dab52a5b0e2c238f2eed0b0c04ef5429e GIT binary patch literal 40542 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 R_(37~F~glYdH;k<{69+VV!QwV literal 0 HcmV?d00001 diff --git a/faafo/doc/source/implementation.rst b/faafo/doc/source/implementation.rst new file mode 100644 index 0000000..d95013d --- /dev/null +++ b/faafo/doc/source/implementation.rst @@ -0,0 +1,11 @@ +Implementation +============== + +Frameworks +---------- + +* http://flask.pocoo.org/ +* http://python-requests.org +* http://www.sqlalchemy.org/ +* https://github.com/celery/kombu +* https://pillow.readthedocs.org/ diff --git a/faafo/doc/source/index.rst b/faafo/doc/source/index.rst new file mode 100644 index 0000000..0204278 --- /dev/null +++ b/faafo/doc/source/index.rst @@ -0,0 +1,14 @@ +First App Application for OpenStack +=================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + + workflow + implementation + installation + usage + development + references diff --git a/faafo/doc/source/installation.rst b/faafo/doc/source/installation.rst new file mode 100644 index 0000000..4a44fba --- /dev/null +++ b/faafo/doc/source/installation.rst @@ -0,0 +1,8 @@ +Installation +============ + +To install the ``First App Application for OpenStack`` run the following command. + +.. code:: + + pip install faafo diff --git a/faafo/doc/source/references.rst b/faafo/doc/source/references.rst new file mode 100644 index 0000000..6748135 --- /dev/null +++ b/faafo/doc/source/references.rst @@ -0,0 +1,6 @@ +References +========== + +* http://en.wikipedia.org/wiki/Julia_set +* http://en.wikipedia.org/wiki/Mandelbrot_set +* http://code.activestate.com/recipes/577120-julia-fractals/ diff --git a/faafo/doc/source/usage.rst b/faafo/doc/source/usage.rst new file mode 100644 index 0000000..4f79d05 --- /dev/null +++ b/faafo/doc/source/usage.rst @@ -0,0 +1,42 @@ +Usage +===== + +Example image +------------- + +.. image:: images/example.png + + +Example outputs +--------------- + +Producer service +~~~~~~~~~~~~~~~~ + +.. code:: + + 2015-03-25 23:01:29.308 22526 INFO faafo.producer [-] generating 1 task(s) + 2015-03-25 23:01:29.344 22526 INFO faafo.producer [-] generated task: {'width': 510, 'yb': 2.478654026560605, 'uuid': '212e8c23-e67f-4bd3-86e1-5a5e811ee2f4', 'iterations': 281, 'xb': 1.1428457603077387, 'xa': -3.3528957195683087, 'ya': -2.1341119130263717, 'height': 278} + 2015-03-25 23:01:30.295 22526 INFO faafo.producer [-] task 212e8c23-e67f-4bd3-86e1-5a5e811ee2f4 processed: {u'duration': 0.8725259304046631, u'checksum': u'b22d975c4f9dc77df5db96ce6264a4990d865dd8f800aba2ac03a065c2f09b1e', u'uuid': u'212e8c23-e67f-4bd3-86e1-5a5e811ee2f4'} + +Worker service +~~~~~~~~~~~~~~ + +.. code:: + + 2015-03-25 23:01:29.378 22518 INFO faafo.worker [-] processing task 212e8c23-e67f-4bd3-86e1-5a5e811ee2f4 + 2015-03-25 23:01:30.251 22518 INFO faafo.worker [-] task 212e8c23-e67f-4bd3-86e1-5a5e811ee2f4 processed in 0.872526 seconds + 2015-03-25 23:01:30.268 22518 INFO faafo.worker [-] saved result of task 212e8c23-e67f-4bd3-86e1-5a5e811ee2f4 to file /home/vagrant/212e8c23-e67f-4bd3-86e1-5a5e811ee2f4.png + + +API Service +~~~~~~~~~~~ +.. code:: + + 2015-03-25 23:01:29.342 22511 INFO werkzeug [-] 127.0.0.1 - - [25/Mar/2015 23:01:29] "POST /api/fractal HTTP/1.1" 201 - + 2015-03-25 23:01:30.317 22511 INFO werkzeug [-] 127.0.0.1 - - [25/Mar/2015 23:01:30] "PUT /api/fractal/212e8c23-e67f-4bd3-86e1-5a5e811ee2f4 HTTP/1.1" 200 - + +Example webinterface view +------------------------- + +.. image:: images/screenshot_webinterface.png diff --git a/faafo/doc/source/workflow.rst b/faafo/doc/source/workflow.rst new file mode 100644 index 0000000..9f642dc --- /dev/null +++ b/faafo/doc/source/workflow.rst @@ -0,0 +1,4 @@ +Workflow +-------- + +.. image:: images/diagram.png diff --git a/faafo/etc/faafo.conf b/faafo/etc/faafo.conf new file mode 100644 index 0000000..fd8dbff --- /dev/null +++ b/faafo/etc/faafo.conf @@ -0,0 +1,110 @@ +[DEFAULT] + +# +# From faafo.api +# + +# Listen address. (string value) +#listen_address = 0.0.0.0 + +# Bind port. (integer value) +#bind_port = 80 + +# Database connection URL. (string value) +database_url = sqlite:////tmp/sqlite.db + +# +# From faafo.queues +# + +# AMQP connection URL. (string value) +transport_url = amqp://guest:guest@localhost:5672// + +# +# From faafo.worker +# + +# API connection URL (string value) +endpoint_url = http://localhost + +# +# From oslo.log +# + +# Print debugging output (set logging level to DEBUG instead of +# default WARNING level). (boolean value) +#debug = false + +# The name of a logging configuration file. This file is appended to +# any existing logging configuration files. For details about logging +# configuration files, see the Python logging module documentation. +# (string value) +# Deprecated group/name - [DEFAULT]/log_config +#log_config_append = + +# DEPRECATED. A logging.Formatter log message format string which may +# use any of the available logging.LogRecord attributes. This option +# is deprecated. Please use logging_context_format_string and +# logging_default_format_string instead. (string value) +#log_format = + +# Format string for %%(asctime)s in log records. Default: %(default)s +# . (string value) +#log_date_format = %Y-%m-%d %H:%M:%S + +# (Optional) Name of log file to output to. If no default is set, +# logging will go to stdout. (string value) +# Deprecated group/name - [DEFAULT]/logfile +#log_file = + +# (Optional) The base directory used for relative --log-file paths. +# (string value) +# Deprecated group/name - [DEFAULT]/logdir +#log_dir = + +# Use syslog for logging. Existing syslog format is DEPRECATED during +# I, and will change in J to honor RFC5424. (boolean value) +#use_syslog = false + +# (Optional) Enables or disables syslog rfc5424 format for logging. If +# enabled, prefixes the MSG part of the syslog message with APP-NAME +# (RFC5424). The format without the APP-NAME is deprecated in I, and +# will be removed in J. (boolean value) +#use_syslog_rfc_format = false + +# Syslog facility to receive log lines. (string value) +#syslog_log_facility = LOG_USER + +# Log output to standard error. (boolean value) +#use_stderr = true + +# Format string to use for log messages with context. (string value) +#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s + +# Format string to use for log messages without context. (string +# value) +#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s + +# Data to append to log format when level is DEBUG. (string value) +#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d + +# Prefix each line of exception output with this format. (string +# value) +#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s + +# List of logger=LEVEL pairs. (list value) +#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN + +# Enables or disables publication of error events. (boolean value) +#publish_errors = false + +# Enables or disables fatal status of deprecations. (boolean value) +#fatal_deprecations = false + +# The format for an instance that is passed with the log message. +# (string value) +#instance_format = "[instance: %(uuid)s] " + +# The format for an instance UUID that is passed with the log message. +# (string value) +#instance_uuid_format = "[instance: %(uuid)s] " diff --git a/faafo/etc/faafo.conf.sample b/faafo/etc/faafo.conf.sample new file mode 100644 index 0000000..b6ebfce --- /dev/null +++ b/faafo/etc/faafo.conf.sample @@ -0,0 +1,125 @@ +[DEFAULT] + +# +# From faafo.api +# + +# Listen address. (string value) +#listen_address = 0.0.0.0 + +# Bind port. (integer value) +#bind_port = 80 + +# Database connection URL. (string value) +#database_url = sqlite:////tmp/sqlite.db + +# +# From faafo.queues +# + +# AMQP connection URL. (string value) +#transport_url = amqp://guest:guest@localhost:5672// + +# +# From faafo.worker +# + +# API connection URL (string value) +#endpoint_url = http://localhost + +# +# From oslo.log +# + +# If set to true, the logging level will be set to DEBUG instead of +# the default INFO level. (boolean value) +#debug = false + +# If set to false, the logging level will be set to WARNING instead of +# the default INFO level. (boolean value) +# This option is deprecated for removal. +# Its value may be silently ignored in the future. +#verbose = true + +# The name of a logging configuration file. This file is appended to +# any existing logging configuration files. For details about logging +# configuration files, see the Python logging module documentation. +# Note that when logging configuration files are used then all logging +# configuration is set in the configuration file and other logging +# configuration options are ignored (for example, +# logging_context_format_string). (string value) +# Deprecated group/name - [DEFAULT]/log_config +#log_config_append = + +# Defines the format string for %%(asctime)s in log records. Default: +# %(default)s . This option is ignored if log_config_append is set. +# (string value) +#log_date_format = %Y-%m-%d %H:%M:%S + +# (Optional) Name of log file to send logging output to. If no default +# is set, logging will go to stderr as defined by use_stderr. This +# option is ignored if log_config_append is set. (string value) +# Deprecated group/name - [DEFAULT]/logfile +#log_file = + +# (Optional) The base directory used for relative log_file paths. +# This option is ignored if log_config_append is set. (string value) +# Deprecated group/name - [DEFAULT]/logdir +#log_dir = + +# Uses logging handler designed to watch file system. When log file is +# moved or removed this handler will open a new log file with +# specified path instantaneously. It makes sense only if log_file +# option is specified and Linux platform is used. This option is +# ignored if log_config_append is set. (boolean value) +#watch_log_file = false + +# Use syslog for logging. Existing syslog format is DEPRECATED and +# will be changed later to honor RFC5424. This option is ignored if +# log_config_append is set. (boolean value) +#use_syslog = false + +# Syslog facility to receive log lines. This option is ignored if +# log_config_append is set. (string value) +#syslog_log_facility = LOG_USER + +# Log output to standard error. This option is ignored if +# log_config_append is set. (boolean value) +#use_stderr = true + +# Format string to use for log messages with context. (string value) +#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s + +# Format string to use for log messages when context is undefined. +# (string value) +#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s + +# Additional data to append to log message when logging level for the +# message is DEBUG. (string value) +#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d + +# Prefix each line of exception output with this format. (string +# value) +#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s + +# Defines the format string for %(user_identity)s that is used in +# logging_context_format_string. (string value) +#logging_user_identity_format = %(user)s %(tenant)s %(domain)s %(user_domain)s %(project_domain)s + +# List of package logging levels in logger=LEVEL pairs. This option is +# ignored if log_config_append is set. (list value) +#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,dogpile.core.dogpile=INFO + +# Enables or disables publication of error events. (boolean value) +#publish_errors = false + +# The format for an instance that is passed with the log message. +# (string value) +#instance_format = "[instance: %(uuid)s] " + +# The format for an instance UUID that is passed with the log message. +# (string value) +#instance_uuid_format = "[instance: %(uuid)s] " + +# Enables or disables fatal status of deprecations. (boolean value) +#fatal_deprecations = false diff --git a/faafo/etc/oslo-config-generator/faafo.conf b/faafo/etc/oslo-config-generator/faafo.conf new file mode 100644 index 0000000..b79fedd --- /dev/null +++ b/faafo/etc/oslo-config-generator/faafo.conf @@ -0,0 +1,6 @@ +[DEFAULT] +output_file = etc/faafo.conf.sample +namespace = faafo.worker +namespace = faafo.api +namespace = oslo.log +namespace = faafo.queues diff --git a/faafo/faafo/__init__.py b/faafo/faafo/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/faafo/faafo/api/__init__.py b/faafo/faafo/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/faafo/faafo/api/service.py b/faafo/faafo/api/service.py new file mode 100644 index 0000000..8a2479c --- /dev/null +++ b/faafo/faafo/api/service.py @@ -0,0 +1,146 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import base64 +import copy +import cStringIO +from pkg_resources import resource_filename + +import flask +import flask.ext.restless +import flask.ext.sqlalchemy +from flask_bootstrap import Bootstrap +from kombu import Connection +from kombu.pools import producers +from oslo_config import cfg +from oslo_log import log +from PIL import Image +from sqlalchemy.dialects import mysql + +from faafo import queues +from faafo import version + +LOG = log.getLogger('faafo.api') +CONF = cfg.CONF + +api_opts = [ + cfg.StrOpt('listen-address', + default='0.0.0.0', + help='Listen address.'), + cfg.IntOpt('bind-port', + default='80', + help='Bind port.'), + cfg.StrOpt('database-url', + default='sqlite:////tmp/sqlite.db', + help='Database connection URL.') +] + +CONF.register_opts(api_opts) + +log.register_options(CONF) +log.set_defaults() + +CONF(project='api', prog='faafo-api', + default_config_files=['/etc/faafo/faafo.conf'], + version=version.version_info.version_string()) + +log.setup(CONF, 'api', + version=version.version_info.version_string()) + +template_path = resource_filename(__name__, "templates") +app = flask.Flask('faafo.api', template_folder=template_path) +app.config['DEBUG'] = CONF.debug +app.config['SQLALCHEMY_DATABASE_URI'] = CONF.database_url +db = flask.ext.sqlalchemy.SQLAlchemy(app) +Bootstrap(app) + + +def list_opts(): + """Entry point for oslo-config-generator.""" + return [(None, copy.deepcopy(api_opts))] + + +class Fractal(db.Model): + uuid = db.Column(db.String(36), primary_key=True) + checksum = db.Column(db.String(256), unique=True) + url = db.Column(db.String(256), nullable=True) + duration = db.Column(db.Float) + size = db.Column(db.Integer, nullable=True) + width = db.Column(db.Integer, nullable=False) + height = db.Column(db.Integer, nullable=False) + iterations = db.Column(db.Integer, nullable=False) + xa = db.Column(db.Float, nullable=False) + xb = db.Column(db.Float, nullable=False) + ya = db.Column(db.Float, nullable=False) + yb = db.Column(db.Float, nullable=False) + + if CONF.database_url.startswith('mysql'): + LOG.debug('Using MySQL database backend') + image = db.Column(mysql.MEDIUMBLOB, nullable=True) + else: + image = db.Column(db.LargeBinary, nullable=True) + + generated_by = db.Column(db.String(256), nullable=True) + + def __repr__(self): + return '' % self.uuid + + +db.create_all() +manager = flask.ext.restless.APIManager(app, flask_sqlalchemy_db=db) +connection = Connection(CONF.transport_url) + + +@app.route('/', methods=['GET']) +@app.route('/index', methods=['GET']) +@app.route('/index/', methods=['GET']) +def index(page=1): + fractals = Fractal.query.filter( + (Fractal.checksum != None) & (Fractal.size != None)).paginate( # noqa + page, 5, error_out=False) + return flask.render_template('index.html', fractals=fractals) + + +@app.route('/fractal/', methods=['GET']) +def get_fractal(fractalid): + fractal = Fractal.query.filter_by(uuid=fractalid).first() + if not fractal: + response = flask.jsonify({'code': 404, + 'message': 'Fracal not found'}) + response.status_code = 404 + else: + image_data = base64.b64decode(fractal.image) + image = Image.open(cStringIO.StringIO(image_data)) + output = cStringIO.StringIO() + image.save(output, "PNG") + image.seek(0) + response = flask.make_response(output.getvalue()) + response.content_type = "image/png" + + return response + + +def generate_fractal(**kwargs): + with producers[connection].acquire(block=True) as producer: + producer.publish(kwargs['result'], + serializer='json', + exchange=queues.task_exchange, + declare=[queues.task_exchange], + routing_key='normal') + + +def main(): + manager.create_api(Fractal, methods=['GET', 'POST', 'DELETE', 'PUT'], + postprocessors={'POST': [generate_fractal]}, + exclude_columns=['image'], + url_prefix='/v1') + app.run(host=CONF.listen_address, port=CONF.bind_port) diff --git a/faafo/faafo/api/templates/index.html b/faafo/faafo/api/templates/index.html new file mode 100644 index 0000000..cc4a44a --- /dev/null +++ b/faafo/faafo/api/templates/index.html @@ -0,0 +1,60 @@ +{% extends "bootstrap/base.html" %} +{% block title %}First App Application for OpenStack{% endblock %} +{% from "bootstrap/pagination.html" import render_pagination %} + +{% block content %} +{{render_pagination(fractals)}} +{% for fractal in fractals.items %} +

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UUID{{ fractal.uuid }}
Duration{{ fractal.duration }} seconds
Dimensions{{ fractal.width }} x {{ fractal.height }} px
Iterations{{ fractal.iterations }}
Parameters +
xa = {{ fractal.xa }}
+xb = {{ fractal.xb }}
+ya = {{ fractal.ya }}
+yb = {{ fractal.yb }}
+
Filesize{{ fractal.size}} bytes
Checksum
{{ fractal.checksum }}
Generated by{{ fractal.generated_by }}
+
+
+{% endfor %} +{{render_pagination(fractals)}} +{% endblock %} diff --git a/faafo/faafo/queues.py b/faafo/faafo/queues.py new file mode 100644 index 0000000..4e5a6fd --- /dev/null +++ b/faafo/faafo/queues.py @@ -0,0 +1,32 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import copy + +import kombu +from oslo_config import cfg + +task_exchange = kombu.Exchange('tasks', type='direct') +task_queue = kombu.Queue('normal', task_exchange, routing_key='normal') + +queues_opts = [ + cfg.StrOpt('transport-url', + default='amqp://guest:guest@localhost:5672//', + help='AMQP connection URL.') +] + +cfg.CONF.register_opts(queues_opts) + + +def list_opts(): + """Entry point for oslo-config-generator.""" + return [(None, copy.deepcopy(queues_opts))] diff --git a/faafo/faafo/version.py b/faafo/faafo/version.py new file mode 100644 index 0000000..7a68690 --- /dev/null +++ b/faafo/faafo/version.py @@ -0,0 +1,15 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import pbr.version + +version_info = pbr.version.VersionInfo('faafo') diff --git a/faafo/faafo/worker/__init__.py b/faafo/faafo/worker/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/faafo/faafo/worker/service.py b/faafo/faafo/worker/service.py new file mode 100644 index 0000000..d1bb193 --- /dev/null +++ b/faafo/faafo/worker/service.py @@ -0,0 +1,156 @@ +#!/usr/bin/env python + +# 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. + +# based on http://code.activestate.com/recipes/577120-julia-fractals/ + +import base64 +import copy +import hashlib +import json +import os +from PIL import Image +import random +import socket +import tempfile +import time + +from kombu.mixins import ConsumerMixin +from oslo_config import cfg +from oslo_log import log +import requests + +from faafo import queues + +LOG = log.getLogger('faafo.worker') +CONF = cfg.CONF + + +worker_opts = { + cfg.StrOpt('endpoint-url', + default='http://localhost', + help='API connection URL') +} + +CONF.register_opts(worker_opts) + + +def list_opts(): + """Entry point for oslo-config-generator.""" + return [(None, copy.deepcopy(worker_opts))] + + +class JuliaSet(object): + + def __init__(self, width, height, xa=-2.0, xb=2.0, ya=-1.5, yb=1.5, + iterations=255): + self.xa = xa + self.xb = xb + self.ya = ya + self.yb = yb + self.iterations = iterations + self.width = width + self.height = height + self.draw() + + def draw(self): + self.image = Image.new("RGB", (self.width, self.height)) + c, z = self._set_point() + for y in range(self.height): + zy = y * (self.yb - self.ya) / (self.height - 1) + self.ya + for x in range(self.width): + zx = x * (self.xb - self.xa) / (self.width - 1) + self.xa + z = zx + zy * 1j + for i in range(self.iterations): + if abs(z) > 2.0: + break + z = z * z + c + self.image.putpixel((x, y), + (i % 8 * 32, i % 16 * 16, i % 32 * 8)) + + def get_file(self): + with tempfile.NamedTemporaryFile(delete=False) as fp: + self.image.save(fp, "PNG") + return fp.name + + def _set_point(self): + random.seed() + while True: + cx = random.random() * (self.xb - self.xa) + self.xa + cy = random.random() * (self.yb - self.ya) + self.ya + c = cx + cy * 1j + z = c + for i in range(self.iterations): + if abs(z) > 2.0: + break + z = z * z + c + if i > 10 and i < 100: + break + + return (c, z) + + +class Worker(ConsumerMixin): + + def __init__(self, connection): + self.connection = connection + + def get_consumers(self, Consumer, channel): + return [Consumer(queues=queues.task_queue, + accept=['json'], + callbacks=[self.process])] + + def process(self, task, message): + LOG.info("processing task %s" % task['uuid']) + LOG.debug(task) + start_time = time.time() + juliaset = JuliaSet(task['width'], + task['height'], + task['xa'], + task['xb'], + task['ya'], + task['yb'], + task['iterations']) + elapsed_time = time.time() - start_time + LOG.info("task %s processed in %f seconds" % + (task['uuid'], elapsed_time)) + + filename = juliaset.get_file() + LOG.debug("saved result of task %s to temporary file %s" % + (task['uuid'], filename)) + with open(filename, "rb") as fp: + size = os.fstat(fp.fileno()).st_size + image = base64.b64encode(fp.read()) + checksum = hashlib.sha256(open(filename, 'rb').read()).hexdigest() + os.remove(filename) + LOG.debug("removed temporary file %s" % filename) + + result = { + 'uuid': task['uuid'], + 'duration': elapsed_time, + 'image': image, + 'checksum': checksum, + 'size': size, + 'generated_by': socket.gethostname() + } + + # NOTE(berendt): only necessary when using requests < 2.4.2 + headers = {'Content-type': 'application/json', + 'Accept': 'text/plain'} + + requests.put("%s/v1/fractal/%s" % + (CONF.endpoint_url, str(task['uuid'])), + json.dumps(result), headers=headers) + + message.ack() + return result diff --git a/faafo/requirements.txt b/faafo/requirements.txt new file mode 100644 index 0000000..55d2597 --- /dev/null +++ b/faafo/requirements.txt @@ -0,0 +1,17 @@ +pbr>=1.6 +pytz +positional +iso8601 +anyjson>=0.3.3 +eventlet>=0.17.4 +PyMySQL>=0.6.2,<0.7 # 0.7 design change breaks faafo, MIT License +Pillow==2.4.0 # MIT +requests>=2.5.2 +Flask-Bootstrap +Flask>=0.10,<1.0 +flask-restless +flask-sqlalchemy +oslo.config>=2.3.0 # Apache-2.0 +oslo.log>=1.8.0 # Apache-2.0 +PrettyTable>=0.7,<0.8 +kombu>=3.0.7 diff --git a/faafo/setup.cfg b/faafo/setup.cfg new file mode 100644 index 0000000..47e621e --- /dev/null +++ b/faafo/setup.cfg @@ -0,0 +1,54 @@ +[metadata] +name = faafo +summary = First App Application for OpenStack +description-file = + README.rst +author = OpenStack Documentation +author-email = openstack-doc@lists.openstack.org +home-page = http://docs.openstack.org/developer/faafo/ +classifier = + Environment :: OpenStack + Intended Audience :: Information Technology + Intended Audience :: System Administrators + License :: OSI Approved :: Apache Software License + Operating System :: POSIX :: Linux + Programming Language :: Python + Programming Language :: Python :: 2 + Programming Language :: Python :: 2.7 + +[files] +packages = + faafo +scripts = + bin/faafo + bin/faafo-worker +extra_files = + faafo/api/templates/index.html +data_files = + /etc/faafo = etc/faafo.conf + +[global] +setup-hooks = + pbr.hooks.setup_hook + +[entry_points] +console_scripts = + faafo-api = faafo.api.service:main +oslo.config.opts = + faafo.api = faafo.api.service:list_opts + faafo.worker = faafo.worker.service:list_opts + faafo.queues= faafo.queues:list_opts + +[build_sphinx] +source-dir = doc/source +build-dir = doc/build +all_files = 1 + +[upload_sphinx] +upload-dir = doc/build/html + +[wheel] +universal = 1 + +[pbr] +warnerrors = true diff --git a/faafo/setup.py b/faafo/setup.py new file mode 100644 index 0000000..ee06f22 --- /dev/null +++ b/faafo/setup.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +# Copyright (c) 2013 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import setuptools + +# In python < 2.7.4, a lazy loading of package `pbr` will break +# setuptools if some other modules registered functions in `atexit`. +# solution from: http://bugs.python.org/issue15881#msg170215 +try: + import multiprocessing # noqa +except ImportError: + pass + +setuptools.setup( + setup_requires=['pbr'], + pbr=True) diff --git a/faafo/test-requirements.txt b/faafo/test-requirements.txt new file mode 100644 index 0000000..3592358 --- /dev/null +++ b/faafo/test-requirements.txt @@ -0,0 +1,2 @@ +hacking<0.11,>=0.10 +sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3 diff --git a/faafo/tox.ini b/faafo/tox.ini new file mode 100644 index 0000000..5f9d4d0 --- /dev/null +++ b/faafo/tox.ini @@ -0,0 +1,27 @@ +[tox] +minversion = 1.6 +envlist = pep8 +skipsdist = True + +[testenv] +usedevelop = True +deps = -r{toxinidir}/test-requirements.txt + -r{toxinidir}/requirements.txt +install_command = pip install -U {opts} {packages} + +[testenv:venv] +commands = {posargs} + +[testenv:docs] +commands = python setup.py build_sphinx + +[testenv:genconfig] +commands = + oslo-config-generator --config-file etc/oslo-config-generator/faafo.conf + +[testenv:pep8] +commands = flake8 {posargs} + +[flake8] +show-source = True +exclude=.venv,.git,.tox,*egg*,build,*openstack/common*