Well it started with re-installing and upgrading fission to 1.16.0 from 1.15.1.
Make a note to update the PVC to use the correct storage class:
# Source: fission-all/templates/storagesvc/pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: fission-storage-pvc labels: app: fission-storage chart: "fission-all-v1.16.0" release: "fission-v1-16-0" spec: # This line below needed to be added or the PVC will sit in pending all confused # This is because I'm using openebs-hostpath as a storageClass storageClassName: openebs-hostpath accessModes: - "ReadWriteOnce" resources: requests: storage: "8Gi"
Creating the Fission Environment, and Package
This is basically a straight rip from the documentation:
# Create the environment fission env create --name pythonsrc --image fission/python-env:latest \ --builder fission/python-builder:latest \ --mincpu 40 --maxcpu 80 \ --minmemory 64 --maxmemory 128 \ --poolsize 2 mkdir sourcepkg cd sourcepkg touch __init__.py build.sh requirements.txt user.py # Populate all the files with the necessary code.. See the documentation here: https://fission.io/docs/usage/function/package/ chmod +x build.sh cd ../ zip -jr demo-src-pkg.zip sourcepkg/ fission package create --sourcearchive demo-src-pkg.zip --env pythonsrc --buildcmd "./build.sh" # will return something like: # Package 'demo-src-pkg-zip-oe1m' created # ensure the package succeeded: fission pkg info --name demo-src-pkg-zip-oe1m # Create the function from the package fission fn create --name srcpy --pkg demo-src-pkg-zip-oe1m --entrypoint "user.main" # Test the function fission fn test --name srcpy # Step 3: look at nonsense user.py code, and profit
Python YAML Fix
This is where my true error was.. I had to disregard an error in the function.
# Running the user.py would return a warning which needed to be ignored... # Below is the command with the output/debug trace: $ python3 sourcepkg/user.py TEST sourcepkg/user.py:13: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full detail s. a = yaml.dump(yaml.load(document)) a: 1 b: c: 3 d: 4
To fix this error that was causing so much pain, I had to update the python script (main function) to the following:
import sys import yaml document = """ a: 1 b: c: 3 d: 4 """ def main(): # The error was the document line, the line below would throw the warning about the yaml loader # a = yaml.dump(yaml.load(document)) # The fix was to add the ", Loader=yaml.FullLoader" as an argument to the yaml.load function a = yaml.dump(yaml.load(document, Loader=yaml.FullLoader)) return a