From 6de6ff1f5885ce32e6a7d30be1d80c82a41e4721 Mon Sep 17 00:00:00 2001 From: Adam Israel Date: Tue, 27 Sep 2016 16:17:01 -0400 Subject: [PATCH] Compiled charm published to cs:~nfv/vpe-router-1 Change-Id: I79a7f51de91ce7aaf17922afd966e436d7784da3 Signed-off-by: Adam Israel --- .gitignore | 1 + builds/vpe-router/.build.manifest | 349 ++++++++++ builds/vpe-router/.gitignore | 5 + builds/vpe-router/Makefile | 24 + builds/vpe-router/README.md | 0 builds/vpe-router/actions.yaml | 99 +++ builds/vpe-router/actions/add-corporation | 18 + builds/vpe-router/actions/configure-interface | 18 + builds/vpe-router/actions/connect-domains | 20 + builds/vpe-router/actions/delete-corporation | 19 + .../actions/delete-domain-connection | 19 + builds/vpe-router/bin/layer_option | 24 + builds/vpe-router/config.yaml | 17 + builds/vpe-router/copyright | 9 + .../deps/layer/layer-basic/.gitignore | 5 + .../deps/layer/layer-basic/Makefile | 24 + .../deps/layer/layer-basic/README.md | 221 ++++++ .../deps/layer/layer-basic/bin/layer_option | 24 + .../deps/layer/layer-basic/copyright | 9 + .../layer/layer-basic/hooks/config-changed | 19 + .../layer/layer-basic/hooks/hook.template | 19 + .../deps/layer/layer-basic/hooks/install | 19 + .../layer/layer-basic/hooks/leader-elected | 19 + .../layer-basic/hooks/leader-settings-changed | 19 + .../deps/layer/layer-basic/hooks/start | 19 + .../deps/layer/layer-basic/hooks/stop | 19 + .../layer/layer-basic/hooks/update-status | 19 + .../layer/layer-basic/hooks/upgrade-charm | 28 + .../deps/layer/layer-basic/layer.yaml | 18 + .../layer-basic/lib/charms/layer/__init__.py | 21 + .../layer-basic/lib/charms/layer/basic.py | 159 +++++ .../layer-basic/lib/charms/layer/execd.py | 138 ++++ .../deps/layer/layer-basic/metadata.yaml | 1 + .../layer/layer-basic/reactive/__init__.py | 0 .../deps/layer/layer-basic/requirements.txt | 2 + .../vpe-router/deps/layer/layer-basic/tox.ini | 12 + .../deps/layer/layer-basic/wheelhouse.txt | 3 + builds/vpe-router/hooks/config-changed | 19 + builds/vpe-router/hooks/hook.template | 19 + builds/vpe-router/hooks/install | 19 + builds/vpe-router/hooks/leader-elected | 19 + .../vpe-router/hooks/leader-settings-changed | 19 + builds/vpe-router/hooks/start | 19 + builds/vpe-router/hooks/stop | 19 + builds/vpe-router/hooks/update-status | 19 + builds/vpe-router/hooks/upgrade-charm | 28 + builds/vpe-router/layer.yaml | 9 + .../vpe-router/lib/charms/layer/__init__.py | 21 + builds/vpe-router/lib/charms/layer/basic.py | 159 +++++ builds/vpe-router/lib/charms/layer/execd.py | 138 ++++ builds/vpe-router/lib/charms/router.py | 80 +++ builds/vpe-router/metadata.yaml | 14 + builds/vpe-router/reactive/__init__.py | 0 builds/vpe-router/reactive/vpe_router.py | 644 ++++++++++++++++++ builds/vpe-router/requirements.txt | 2 + builds/vpe-router/tox.ini | 12 + .../vpe-router/wheelhouse/Jinja2-2.8.tar.gz | Bin 0 -> 357055 bytes .../wheelhouse/MarkupSafe-0.23.tar.gz | Bin 0 -> 13416 bytes .../vpe-router/wheelhouse/PyYAML-3.12.tar.gz | Bin 0 -> 253011 bytes .../wheelhouse/Tempita-0.5.2.tar.gz | Bin 0 -> 12648 bytes .../wheelhouse/charmhelpers-0.9.1.tar.gz | Bin 0 -> 316766 bytes .../wheelhouse/charms.reactive-0.4.4.tar.gz | Bin 0 -> 20289 bytes .../vpe-router/wheelhouse/ecdsa-0.13.tar.gz | Bin 0 -> 55579 bytes .../wheelhouse/netaddr-0.7.18.tar.gz | Bin 0 -> 1715389 bytes .../wheelhouse/paramiko-1.16.3.tar.gz | Bin 0 -> 1183130 bytes builds/vpe-router/wheelhouse/pip-8.1.2.tar.gz | Bin 0 -> 1140573 bytes .../vpe-router/wheelhouse/pyaml-16.9.0.tar.gz | Bin 0 -> 19440 bytes .../wheelhouse/pycrypto-2.6.1.tar.gz | Bin 0 -> 446240 bytes .../vpe-router/wheelhouse/six-1.10.0.tar.gz | Bin 0 -> 29630 bytes juju-env.sh | 4 + 70 files changed, 2702 insertions(+) create mode 100644 .gitignore create mode 100644 builds/vpe-router/.build.manifest create mode 100644 builds/vpe-router/.gitignore create mode 100644 builds/vpe-router/Makefile create mode 100644 builds/vpe-router/README.md create mode 100644 builds/vpe-router/actions.yaml create mode 100755 builds/vpe-router/actions/add-corporation create mode 100755 builds/vpe-router/actions/configure-interface create mode 100755 builds/vpe-router/actions/connect-domains create mode 100755 builds/vpe-router/actions/delete-corporation create mode 100755 builds/vpe-router/actions/delete-domain-connection create mode 100755 builds/vpe-router/bin/layer_option create mode 100644 builds/vpe-router/config.yaml create mode 100644 builds/vpe-router/copyright create mode 100644 builds/vpe-router/deps/layer/layer-basic/.gitignore create mode 100644 builds/vpe-router/deps/layer/layer-basic/Makefile create mode 100644 builds/vpe-router/deps/layer/layer-basic/README.md create mode 100755 builds/vpe-router/deps/layer/layer-basic/bin/layer_option create mode 100644 builds/vpe-router/deps/layer/layer-basic/copyright create mode 100755 builds/vpe-router/deps/layer/layer-basic/hooks/config-changed create mode 100644 builds/vpe-router/deps/layer/layer-basic/hooks/hook.template create mode 100755 builds/vpe-router/deps/layer/layer-basic/hooks/install create mode 100755 builds/vpe-router/deps/layer/layer-basic/hooks/leader-elected create mode 100755 builds/vpe-router/deps/layer/layer-basic/hooks/leader-settings-changed create mode 100755 builds/vpe-router/deps/layer/layer-basic/hooks/start create mode 100755 builds/vpe-router/deps/layer/layer-basic/hooks/stop create mode 100755 builds/vpe-router/deps/layer/layer-basic/hooks/update-status create mode 100755 builds/vpe-router/deps/layer/layer-basic/hooks/upgrade-charm create mode 100644 builds/vpe-router/deps/layer/layer-basic/layer.yaml create mode 100644 builds/vpe-router/deps/layer/layer-basic/lib/charms/layer/__init__.py create mode 100644 builds/vpe-router/deps/layer/layer-basic/lib/charms/layer/basic.py create mode 100644 builds/vpe-router/deps/layer/layer-basic/lib/charms/layer/execd.py create mode 100644 builds/vpe-router/deps/layer/layer-basic/metadata.yaml create mode 100644 builds/vpe-router/deps/layer/layer-basic/reactive/__init__.py create mode 100644 builds/vpe-router/deps/layer/layer-basic/requirements.txt create mode 100644 builds/vpe-router/deps/layer/layer-basic/tox.ini create mode 100644 builds/vpe-router/deps/layer/layer-basic/wheelhouse.txt create mode 100755 builds/vpe-router/hooks/config-changed create mode 100644 builds/vpe-router/hooks/hook.template create mode 100755 builds/vpe-router/hooks/install create mode 100755 builds/vpe-router/hooks/leader-elected create mode 100755 builds/vpe-router/hooks/leader-settings-changed create mode 100755 builds/vpe-router/hooks/start create mode 100755 builds/vpe-router/hooks/stop create mode 100755 builds/vpe-router/hooks/update-status create mode 100755 builds/vpe-router/hooks/upgrade-charm create mode 100644 builds/vpe-router/layer.yaml create mode 100644 builds/vpe-router/lib/charms/layer/__init__.py create mode 100644 builds/vpe-router/lib/charms/layer/basic.py create mode 100644 builds/vpe-router/lib/charms/layer/execd.py create mode 100644 builds/vpe-router/lib/charms/router.py create mode 100644 builds/vpe-router/metadata.yaml create mode 100644 builds/vpe-router/reactive/__init__.py create mode 100644 builds/vpe-router/reactive/vpe_router.py create mode 100644 builds/vpe-router/requirements.txt create mode 100644 builds/vpe-router/tox.ini create mode 100644 builds/vpe-router/wheelhouse/Jinja2-2.8.tar.gz create mode 100644 builds/vpe-router/wheelhouse/MarkupSafe-0.23.tar.gz create mode 100644 builds/vpe-router/wheelhouse/PyYAML-3.12.tar.gz create mode 100644 builds/vpe-router/wheelhouse/Tempita-0.5.2.tar.gz create mode 100644 builds/vpe-router/wheelhouse/charmhelpers-0.9.1.tar.gz create mode 100644 builds/vpe-router/wheelhouse/charms.reactive-0.4.4.tar.gz create mode 100644 builds/vpe-router/wheelhouse/ecdsa-0.13.tar.gz create mode 100644 builds/vpe-router/wheelhouse/netaddr-0.7.18.tar.gz create mode 100644 builds/vpe-router/wheelhouse/paramiko-1.16.3.tar.gz create mode 100644 builds/vpe-router/wheelhouse/pip-8.1.2.tar.gz create mode 100644 builds/vpe-router/wheelhouse/pyaml-16.9.0.tar.gz create mode 100644 builds/vpe-router/wheelhouse/pycrypto-2.6.1.tar.gz create mode 100644 builds/vpe-router/wheelhouse/six-1.10.0.tar.gz create mode 100644 juju-env.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..6912fefe --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +deps/ diff --git a/builds/vpe-router/.build.manifest b/builds/vpe-router/.build.manifest new file mode 100644 index 00000000..a8d834ae --- /dev/null +++ b/builds/vpe-router/.build.manifest @@ -0,0 +1,349 @@ +{ + "layers": [ + "layer:basic", + "vpe-router", + "build" + ], + "signatures": { + "wheelhouse/ecdsa-0.13.tar.gz": [ + "vpe-router", + "dynamic", + "64cf1ee26d1cde3c73c6d7d107f835fed7c6a2904aef9eac223d57ad800c43fa" + ], + "hooks/leader-settings-changed": [ + "layer:basic", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "deps/layer/layer-basic/copyright": [ + "vpe-router", + "static", + "1e2afbd75c71affa132ae7ee3327cb29b5e4b9d9705f27dfd03857c326f50c5c" + ], + "deps/layer/layer-basic/Makefile": [ + "vpe-router", + "static", + "b7ab3a34e5faf79b96a8632039a0ad0aa87f2a9b5f0ba604e007cafb22190301" + ], + "lib/charms/layer/execd.py": [ + "layer:basic", + "static", + "c0eb4c90e93a14f04d851f78bc6592e093226321fbe328125958633397aed014" + ], + "hooks/leader-elected": [ + "layer:basic", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "deps/layer/layer-basic/hooks/install": [ + "vpe-router", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "Makefile": [ + "layer:basic", + "static", + "b7ab3a34e5faf79b96a8632039a0ad0aa87f2a9b5f0ba604e007cafb22190301" + ], + "reactive/__init__.py": [ + "layer:basic", + "static", + "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + ], + "deps/layer/layer-basic/hooks/stop": [ + "vpe-router", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "wheelhouse/paramiko-1.16.3.tar.gz": [ + "vpe-router", + "dynamic", + "97d932fdb4fec9aadf6bea368123f3ee15b92199f92eb62666370c7fed62d072" + ], + "bin/layer_option": [ + "layer:basic", + "static", + "621b556cd208005e131e9f648859294347da9376609745a73ca2e808dd2032f9" + ], + ".build.manifest": [ + "build", + "dynamic", + "unchecked" + ], + "actions/delete-corporation": [ + "vpe-router", + "static", + "4f74675749113846e3602919aa7d536510f6995877474f5b377629a767792030" + ], + "deps/layer/layer-basic/lib/charms/layer/execd.py": [ + "vpe-router", + "static", + "c0eb4c90e93a14f04d851f78bc6592e093226321fbe328125958633397aed014" + ], + "hooks/upgrade-charm": [ + "layer:basic", + "static", + "8b9c153a61cc78067af8d016a8fa1c764caad3a40c82bb0b5121fc4c4c6a04f1" + ], + "wheelhouse/charms.reactive-0.4.4.tar.gz": [ + "layer:basic", + "dynamic", + "97455ce944a85adb2ceb897af81a1b93746f43527e6c4ac44798b193132158c7" + ], + "deps/layer/layer-basic/wheelhouse.txt": [ + "vpe-router", + "static", + "2f19b10e72d7299f4fc53c33caa0ad425ebcef59231238b49bc45b10ab49ae16" + ], + "wheelhouse/Tempita-0.5.2.tar.gz": [ + "layer:basic", + "dynamic", + "cacecf0baa674d356641f1d406b8bff1d756d739c46b869a54de515d08e6fc9c" + ], + "actions.yaml": [ + "vpe-router", + "dynamic", + "8124c33231f4b04673ec658b09e9fd393f1012dcf7bdeaf6ce23518b976c2b2a" + ], + "deps/layer/layer-basic/README.md": [ + "vpe-router", + "static", + "83d8c3dbf1dd3be70ba9774a16780d130ebdcfc722d89d86ed596e7feac70c9f" + ], + "hooks/hook.template": [ + "layer:basic", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "tox.ini": [ + "layer:basic", + "static", + "00b57a776ac313e92a52daa05d1fdb6056c21b3105b643d32610fd937664321b" + ], + "metadata.yaml": [ + "vpe-router", + "dynamic", + "0aaad2d64b51036f39d17b3120c38b498de270c6363db154477ea76d308e3709" + ], + "copyright": [ + "layer:basic", + "static", + "1e2afbd75c71affa132ae7ee3327cb29b5e4b9d9705f27dfd03857c326f50c5c" + ], + "deps/layer/layer-basic/hooks/hook.template": [ + "vpe-router", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "wheelhouse/PyYAML-3.12.tar.gz": [ + "layer:basic", + "dynamic", + "592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab" + ], + "wheelhouse/netaddr-0.7.18.tar.gz": [ + "layer:basic", + "dynamic", + "a1f5c9fcf75ac2579b9995c843dade33009543c04f218ff7c007b3c81695bd19" + ], + "deps/layer/layer-basic/bin/layer_option": [ + "vpe-router", + "static", + "621b556cd208005e131e9f648859294347da9376609745a73ca2e808dd2032f9" + ], + ".gitignore": [ + "layer:basic", + "static", + "0da5c4dcda27cd6406e5bb81cbf68ddccaf728ac764ec15053a165c1449d87d9" + ], + "hooks/install": [ + "layer:basic", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "wheelhouse/MarkupSafe-0.23.tar.gz": [ + "layer:basic", + "dynamic", + "a4ec1aff59b95a14b45eb2e23761a0179e98319da5a7eb76b56ea8cdc7b871c3" + ], + "deps/layer/layer-basic/hooks/config-changed": [ + "vpe-router", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "wheelhouse/pyaml-16.9.0.tar.gz": [ + "layer:basic", + "dynamic", + "f8d394144d3bc5360cd48f54bfaa2d100a47040216d6f8703c17bd4b235e9bb3" + ], + "deps/layer/layer-basic/metadata.yaml": [ + "vpe-router", + "static", + "ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356" + ], + "hooks/config-changed": [ + "layer:basic", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "hooks/stop": [ + "layer:basic", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "wheelhouse/six-1.10.0.tar.gz": [ + "layer:basic", + "dynamic", + "105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a" + ], + "lib/charms/layer/basic.py": [ + "layer:basic", + "static", + "32204327952d4ea4ef1063f45bdbe7be379a7a7b8220f3e5f2f5e11003b25654" + ], + "wheelhouse/pycrypto-2.6.1.tar.gz": [ + "vpe-router", + "dynamic", + "f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c" + ], + "deps/layer/layer-basic/hooks/update-status": [ + "vpe-router", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "lib/charms/router.py": [ + "vpe-router", + "static", + "f9afb193fa59c6b23558e11b7f680bcff79f9567f474fa14ba3202c974fa0cc2" + ], + "deps/layer/layer-basic/hooks/upgrade-charm": [ + "vpe-router", + "static", + "8b9c153a61cc78067af8d016a8fa1c764caad3a40c82bb0b5121fc4c4c6a04f1" + ], + "wheelhouse/Jinja2-2.8.tar.gz": [ + "layer:basic", + "dynamic", + "bc1ff2ff88dbfacefde4ddde471d1417d3b304e8df103a7a9437d47269201bf4" + ], + "deps/layer/layer-basic/hooks/start": [ + "vpe-router", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "actions/add-corporation": [ + "vpe-router", + "static", + "e17238f57178836974b3dff358318ffefdacc54988fbf6099c454be06e7fcf92" + ], + "wheelhouse/pip-8.1.2.tar.gz": [ + "layer:basic", + "dynamic", + "4d24b03ffa67638a3fa931c09fd9e0273ffa904e95ebebe7d4b1a54c93d7b732" + ], + "deps/layer/layer-basic/hooks/leader-settings-changed": [ + "vpe-router", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "hooks/update-status": [ + "layer:basic", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "deps/layer/layer-basic/lib/charms/layer/__init__.py": [ + "vpe-router", + "static", + "4ffd74384bd81d737572acf2d14fe55431eab8f49d6212d9aabedf24e1d992b2" + ], + "deps/layer/layer-basic/.gitignore": [ + "vpe-router", + "static", + "0da5c4dcda27cd6406e5bb81cbf68ddccaf728ac764ec15053a165c1449d87d9" + ], + "deps/layer/layer-basic/lib/charms/layer/basic.py": [ + "vpe-router", + "static", + "32204327952d4ea4ef1063f45bdbe7be379a7a7b8220f3e5f2f5e11003b25654" + ], + "README.md": [ + "vpe-router", + "static", + "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + ], + "deps/layer/layer-basic/reactive/__init__.py": [ + "vpe-router", + "static", + "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + ], + "actions/configure-interface": [ + "vpe-router", + "static", + "760002fbc2c7a666e0698f2e7179d5c2286151f0e4dd66dfb7465fafb050a55d" + ], + "deps/layer/layer-basic/tox.ini": [ + "vpe-router", + "static", + "00b57a776ac313e92a52daa05d1fdb6056c21b3105b643d32610fd937664321b" + ], + "hooks/start": [ + "layer:basic", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "deps/layer/layer-basic/hooks/leader-elected": [ + "vpe-router", + "static", + "3a854a5fd180c5bacbb80b501d968a8d8bdc1468361e7123ea4022a1e0363c9a" + ], + "actions/connect-domains": [ + "vpe-router", + "static", + "26e2825afa84388e333c09a21d3ffa1ca1830e0c4c9738bdb5ffe1c946672200" + ], + "reactive/vpe_router.py": [ + "vpe-router", + "static", + "1f1312855d6b44d4f7578b3b3e43271ea15865ab6eced72b74ce6f87ca523030" + ], + "deps/layer/layer-basic/requirements.txt": [ + "vpe-router", + "static", + "0f1c70d27e26005a96d66ad54482877ae20f7737693c833e29dd72bd6ac24892" + ], + "deps/layer/layer-basic/layer.yaml": [ + "vpe-router", + "static", + "fbd3e3a22f3b8b1e7656e12f5db0ebf69c145b8e8b59c125e6faf043cba50b9b" + ], + "config.yaml": [ + "vpe-router", + "dynamic", + "826c6a9af5ccee2dbcc0dd890f2c7dbc9ffee81946c2e3f3944cc612d6115f14" + ], + "layer.yaml": [ + "vpe-router", + "dynamic", + "175d7cdddccf1f1e7b3df8caf7098a39d05000525c61d7e6eee1c81bc5d1966c" + ], + "lib/charms/layer/__init__.py": [ + "layer:basic", + "static", + "4ffd74384bd81d737572acf2d14fe55431eab8f49d6212d9aabedf24e1d992b2" + ], + "wheelhouse/charmhelpers-0.9.1.tar.gz": [ + "layer:basic", + "dynamic", + "60de745f3ff1424b9aa294c9d28d0b863f0827314331f330264ecc9a89142218" + ], + "actions/delete-domain-connection": [ + "vpe-router", + "static", + "b7f42af9d853c5e69e691b7ee56691984730334436f88c97689318038940db4e" + ], + "requirements.txt": [ + "layer:basic", + "static", + "0f1c70d27e26005a96d66ad54482877ae20f7737693c833e29dd72bd6ac24892" + ] + } +} \ No newline at end of file diff --git a/builds/vpe-router/.gitignore b/builds/vpe-router/.gitignore new file mode 100644 index 00000000..56e95aac --- /dev/null +++ b/builds/vpe-router/.gitignore @@ -0,0 +1,5 @@ +*.pyc +*~ +.ropeproject +.settings +.tox diff --git a/builds/vpe-router/Makefile b/builds/vpe-router/Makefile new file mode 100644 index 00000000..a1ad3a5c --- /dev/null +++ b/builds/vpe-router/Makefile @@ -0,0 +1,24 @@ +#!/usr/bin/make + +all: lint unit_test + + +.PHONY: clean +clean: + @rm -rf .tox + +.PHONY: apt_prereqs +apt_prereqs: + @# Need tox, but don't install the apt version unless we have to (don't want to conflict with pip) + @which tox >/dev/null || (sudo apt-get install -y python-pip && sudo pip install tox) + +.PHONY: lint +lint: apt_prereqs + @tox --notest + @PATH=.tox/py34/bin:.tox/py35/bin flake8 $(wildcard hooks reactive lib unit_tests tests) + @charm proof + +.PHONY: unit_test +unit_test: apt_prereqs + @echo Starting tests... + tox diff --git a/builds/vpe-router/README.md b/builds/vpe-router/README.md new file mode 100644 index 00000000..e69de29b diff --git a/builds/vpe-router/actions.yaml b/builds/vpe-router/actions.yaml new file mode 100644 index 00000000..7da5559e --- /dev/null +++ b/builds/vpe-router/actions.yaml @@ -0,0 +1,99 @@ +"configure-interface": + "description": "Configure an ethernet interface." + "params": + "iface-name": + "type": "string" + "description": "Device name, e.g. eth1" + "cidr": + "type": "string" + "description": "Network range to assign to the interface" + "required": ["iface-name"] +"add-corporation": + "description": "Add a new corporation to the router" + "params": + "domain-name": + "type": "string" + "description": "Name of the vlan corporation" + "iface-name": + "type": "string" + "description": "Device name. eg eth1" + "vlan-id": + "type": "integer" + "description": "The name of the vlan?" + "cidr": + "type": "string" + "description": "Network range to assign to the tagged vlan-id" + "area": + "type": "string" + "description": "Link State Advertisements (LSA) type" + "subnet-cidr": + "type": "string" + "description": "Network range" + "subnet-area": + "type": "string" + "description": "Link State Advertisements (LSA) type" + "required": ["domain-name", "iface-name", "vlan-id", "cidr", "area", "subnet-cidr", + "subnet-area"] +"delete-corporation": + "description": "Remove the corporation from the router completely" + "params": + "domain-name": + "type": "string" + "description": "The domain of the corporation to remove" + "cidr": + "type": "string" + "description": "Network range to assign to the tagged vlan-id" + "area": + "type": "string" + "description": "Link State Advertisements (LSA) type" + "subnet-cidr": + "type": "string" + "description": "Network range" + "subnet-area": + "type": "string" + "description": "Link State Advertisements (LSA) type" + "required": ["domain-name", "cidr", "area", "subnet-cidr", "subnet-area"] +"connect-domains": + "description": "Connect the router to another router, where the same domain is present" + "params": + "domain-name": + "type": "string" + "description": "The domain of the coproration to connect" + "iface-name": + "type": "string" + "description": "Device name. eg eth1" + "tunnel-name": + "type": "string" + "description": "Name of the tunnel ?" + "local-ip": + "type": "string" + "description": "local ip ?" + "remote-ip": + "type": "string" + "description": "remote ip ?" + "tunnel-key": + "type": "string" + "description": "tunnel key?" + "internal-local-ip": + "type": "string" + "description": "internal local ip?" + "internal-remote-ip": + "type": "string" + "description": "internal remote ip?" + "tunnel-type": + "type": "string" + "default": "gre" + "description": "The type of tunnel to establish." + "required": ["domain-name", "iface-name", "tunnel-name", "local-ip", "remote-ip", + "tunnel-key", "internal-local-ip", "internal-remote-ip"] +"delete-domain-connection": + "description": "Remove the tunnel to another router where the domain is present." + "params": + "domain-name": + "type": "string" + "description": "The domain of the corporation to unlink" + "tunnel-name": + "type": "string" + "description": "The name of the tunnel to unlink that the domain-name is attached\ + \ to" + "required": ["domain-name", "tunnel-name"] diff --git a/builds/vpe-router/actions/add-corporation b/builds/vpe-router/actions/add-corporation new file mode 100755 index 00000000..c8ab2f80 --- /dev/null +++ b/builds/vpe-router/actions/add-corporation @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 +import sys +sys.path.append('lib') + +from charms.reactive import main +from charms.reactive import set_state +from charmhelpers.core.hookenv import action_fail + +""" +`set_state` only works here because it's flushed to disk inside the `main()` +loop. remove_state will need to be called inside the action method. +""" +set_state('vpe.add-corporation') + +try: + main() +except Exception as e: + action_fail(repr(e)) diff --git a/builds/vpe-router/actions/configure-interface b/builds/vpe-router/actions/configure-interface new file mode 100755 index 00000000..db9a099c --- /dev/null +++ b/builds/vpe-router/actions/configure-interface @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 +import sys +sys.path.append('lib') + +from charms.reactive import main +from charms.reactive import set_state +from charmhelpers.core.hookenv import action_fail + +""" +`set_state` only works here because it's flushed to disk inside the `main()` +loop. remove_state will need to be called inside the action method. +""" +set_state('vpe.configure-interface') + +try: + main() +except Exception as e: + action_fail(repr(e)) diff --git a/builds/vpe-router/actions/connect-domains b/builds/vpe-router/actions/connect-domains new file mode 100755 index 00000000..48adfc76 --- /dev/null +++ b/builds/vpe-router/actions/connect-domains @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 + +# Load modules from $CHARM_DIR/lib +import sys +sys.path.append('lib') + +from charms.reactive import main +from charms.reactive import set_state +from charmhelpers.core.hookenv import action_fail + +""" +`set_state` only works here because it's flushed to disk inside the `main()` +loop. remove_state will need to be called inside the action method. +""" +set_state('vpe.connect-domains') + +try: + main() +except Exception as e: + action_fail(repr(e)) diff --git a/builds/vpe-router/actions/delete-corporation b/builds/vpe-router/actions/delete-corporation new file mode 100755 index 00000000..0576c082 --- /dev/null +++ b/builds/vpe-router/actions/delete-corporation @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 +import sys +sys.path.append('lib') + +from charms.reactive import main +from charms.reactive import set_state +from charmhelpers.core.hookenv import action_fail + + +""" +`set_state` only works here because it's flushed to disk inside the `main()` +loop. remove_state will need to be called inside the action method. +""" +set_state('vpe.delete-corporation') + +try: + main() +except Exception as e: + action_fail(repr(e)) diff --git a/builds/vpe-router/actions/delete-domain-connection b/builds/vpe-router/actions/delete-domain-connection new file mode 100755 index 00000000..5ba05f65 --- /dev/null +++ b/builds/vpe-router/actions/delete-domain-connection @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 +import sys +sys.path.append('lib') + +from charms.reactive import main +from charms.reactive import set_state +from charmhelpers.core.hookenv import action_fail + + +""" +`set_state` only works here because it's flushed to disk inside the `main()` +loop. remove_state will need to be called inside the action method. +""" +set_state('vpe.delete-domain-connection') + +try: + main() +except Exception as e: + action_fail(repr(e)) diff --git a/builds/vpe-router/bin/layer_option b/builds/vpe-router/bin/layer_option new file mode 100755 index 00000000..90dc400e --- /dev/null +++ b/builds/vpe-router/bin/layer_option @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 + +import sys +sys.path.append('lib') + +import argparse +from charms.layer import options + + +parser = argparse.ArgumentParser(description='Access layer options.') +parser.add_argument('section', + help='the section, or layer, the option is from') +parser.add_argument('option', + help='the option to access') + +args = parser.parse_args() +value = options(args.section).get(args.option, '') +if isinstance(value, bool): + sys.exit(0 if value else 1) +elif isinstance(value, list): + for val in value: + print(val) +else: + print(value) diff --git a/builds/vpe-router/config.yaml b/builds/vpe-router/config.yaml new file mode 100644 index 00000000..c14b7798 --- /dev/null +++ b/builds/vpe-router/config.yaml @@ -0,0 +1,17 @@ +"options": + "vpe-router": + "default": !!null "" + "type": "string" + "description": "Hostname or IP of the vpe router to connect to" + "user": + "type": "string" + "default": "root" + "description": "Username for VPE Router" + "pass": + "type": "string" + "default": !!null "" + "description": "Password for VPE Router" + "hostname": + "type": "string" + "default": !!null "" + "description": "The hostname to set the vpe router to." diff --git a/builds/vpe-router/copyright b/builds/vpe-router/copyright new file mode 100644 index 00000000..afa853ff --- /dev/null +++ b/builds/vpe-router/copyright @@ -0,0 +1,9 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0 + +Files: * +Copyright: 2015, Canonical Ltd. +License: GPL-3 + +License: GPL-3 + On Debian GNU/Linux system you can find the complete text of the + GPL-3 license in '/usr/share/common-licenses/GPL-3' diff --git a/builds/vpe-router/deps/layer/layer-basic/.gitignore b/builds/vpe-router/deps/layer/layer-basic/.gitignore new file mode 100644 index 00000000..56e95aac --- /dev/null +++ b/builds/vpe-router/deps/layer/layer-basic/.gitignore @@ -0,0 +1,5 @@ +*.pyc +*~ +.ropeproject +.settings +.tox diff --git a/builds/vpe-router/deps/layer/layer-basic/Makefile b/builds/vpe-router/deps/layer/layer-basic/Makefile new file mode 100644 index 00000000..a1ad3a5c --- /dev/null +++ b/builds/vpe-router/deps/layer/layer-basic/Makefile @@ -0,0 +1,24 @@ +#!/usr/bin/make + +all: lint unit_test + + +.PHONY: clean +clean: + @rm -rf .tox + +.PHONY: apt_prereqs +apt_prereqs: + @# Need tox, but don't install the apt version unless we have to (don't want to conflict with pip) + @which tox >/dev/null || (sudo apt-get install -y python-pip && sudo pip install tox) + +.PHONY: lint +lint: apt_prereqs + @tox --notest + @PATH=.tox/py34/bin:.tox/py35/bin flake8 $(wildcard hooks reactive lib unit_tests tests) + @charm proof + +.PHONY: unit_test +unit_test: apt_prereqs + @echo Starting tests... + tox diff --git a/builds/vpe-router/deps/layer/layer-basic/README.md b/builds/vpe-router/deps/layer/layer-basic/README.md new file mode 100644 index 00000000..0337c83b --- /dev/null +++ b/builds/vpe-router/deps/layer/layer-basic/README.md @@ -0,0 +1,221 @@ +# Overview + +This is the base layer for all charms [built using layers][building]. It +provides all of the standard Juju hooks and runs the +[charms.reactive.main][charms.reactive] loop for them. It also bootstraps the +[charm-helpers][] and [charms.reactive][] libraries and all of their +dependencies for use by the charm. + +# Usage + +To create a charm layer using this base layer, you need only include it in +a `layer.yaml` file: + +```yaml +includes: ['layer:basic'] +``` + +This will fetch this layer from [interfaces.juju.solutions][] and incorporate +it into your charm layer. You can then add handlers under the `reactive/` +directory. Note that **any** file under `reactive/` will be expected to +contain handlers, whether as Python decorated functions or [executables][non-python] +using the [external handler protocol][]. + +### Charm Dependencies + +Each layer can include a `wheelhouse.txt` file with Python requirement lines. +For example, this layer's `wheelhouse.txt` includes: + +``` +pip>=7.0.0,<8.0.0 +charmhelpers>=0.4.0,<1.0.0 +charms.reactive>=0.1.0,<2.0.0 +``` + +All of these dependencies from each layer will be fetched (and updated) at build +time and will be automatically installed by this base layer before any reactive +handlers are run. + +Note that the `wheelhouse.txt` file is intended for **charm** dependencies only. +That is, for libraries that the charm code itself needs to do its job of deploying +and configuring the payload. If the payload itself has Python dependencies, those +should be handled separately, by the charm. + +See [PyPI][pypi charms.X] for packages under the `charms.` namespace which might +be useful for your charm. + +### Layer Namespace + +Each layer has a reserved section in the `charms.layer.` Python package namespace, +which it can populate by including a `lib/charms/layer/.py` file or +by placing files under `lib/charms/layer//`. (If the layer name +includes hyphens, replace them with underscores.) These can be helpers that the +layer uses internally, or it can expose classes or functions to be used by other +layers to interact with that layer. + +For example, a layer named `foo` could include a `lib/charms/layer/foo.py` file +with some helper functions that other layers could access using: + +```python +from charms.layer.foo import my_helper +``` + +### Layer Options + +Any layer can define options in its `layer.yaml`. Those options can then be set +by other layers to change the behavior of your layer. The options are defined +using [jsonschema][], which is the same way that [action paramters][] are defined. + +For example, the `foo` layer could include the following option definitons: + +```yaml +includes: ['layer:basic'] +defines: # define some options for this layer (the layer "foo") + enable-bar: # define an "enable-bar" option for this layer + description: If true, enable support for "bar". + type: boolean + default: false +``` + +A layer using `foo` could then set it: + +```yaml +includes: ['layer:foo'] +options: + foo: # setting options for the "foo" layer + enable-bar: true # set the "enable-bar" option to true +``` + +The `foo` layer can then use the `charms.layer.options` helper to load the values +for the options that it defined. For example: + +```python +from charms import layer + +@when('state') +def do_thing(): + layer_opts = layer.options('foo') # load all of the options for the "foo" layer + if layer_opts['enable-bar']: # check the value of the "enable-bar" option + hookenv.log("Bar is enabled") +``` + +You can also access layer options in other handlers, such as Bash, using +the command-line interface: + +```bash +. charms.reactive.sh + +@when 'state' +function do_thing() { + if layer_option foo enable-bar; then + juju-log "Bar is enabled" + juju-log "bar-value is: $(layer_option foo bar-value)" + fi +} + +reactive_handler_main +``` + +Note that options of type `boolean` will set the exit code, while other types +will be printed out. + +# Hooks + +This layer provides hooks that other layers can react to using the decorators +of the [charms.reactive][] library: + + * `config-changed` + * `install` + * `leader-elected` + * `leader-settings-changed` + * `start` + * `stop` + * `upgrade-charm` + * `update-status` + +Other hooks are not implemented at this time. A new layer can implement storage +or relation hooks in their own layer by putting them in the `hooks` directory. + +**Note:** Because `update-status` is invoked every 5 minutes, you should take +care to ensure that your reactive handlers only invoke expensive operations +when absolutely necessary. It is recommended that you use helpers like +[`@only_once`][], [`@when_file_changed`][], and [`data_changed`][] to ensure +that handlers run only when necessary. + +# Layer Configuration + +This layer supports the following options, which can be set in `layer.yaml`: + + * **packages** A list of system packages to be installed before the reactive + handlers are invoked. + + * **use_venv** If set to true, the charm dependencies from the various + layers' `wheelhouse.txt` files will be installed in a Python virtualenv + located at `$CHARM_DIR/../.venv`. This keeps charm dependencies from + conflicting with payload dependencies, but you must take care to preserve + the environment and interpreter if using `execl` or `subprocess`. + + * **include_system_packages** If set to true and using a venv, include + the `--system-site-packages` options to make system Python libraries + visible within the venv. + +An example `layer.yaml` using these options might be: + +```yaml +includes: ['layer:basic'] +options: + basic: + packages: ['git'] + use_venv: true + include_system_packages: true +``` + + +# Reactive States + +This layer will set the following states: + + * **`config.changed`** Any config option has changed from its previous value. + This state is cleared automatically at the end of each hook invocation. + + * **`config.changed.