Well it started with re-installing and upgrading fission to 1.16.0 from 1.15.1.
Upgrading Fission
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