datawire / forge

Define and run multi-container apps in Kubernetes
http://forge.sh
Apache License 2.0
415 stars 43 forks source link

Fix for missing namespace on delete #230

Closed pradkowski closed 2 months ago

pradkowski commented 5 years ago

If objects created by Forge have no namespace assigned Forge crashes on delete.

Eg.:

$ forge delete --all
║ kubectl get csr,clusterrolebindings,clusterroles,cm,controllerrevisions,crd,ds,deploy,ep,ev,hpa,ing,jobs,limits,netpol,no,pvc,pv,pdb,po,psp,podtemplates,rs,rc,quota,rolebindings,roles,secrets,sa,svc,sts --all-namespaces -lforge.service -ogo-template={{range .items}}{{.kind}} {{.metadata.namespace}} {{.metadata.name}}{{"\n"}}{{end}}
║ ClusterRoleBinding <no value> efs-provisioner
║ ClusterRole <no value> efs-provisioner
║ Deployment default efs-provisioner
║ ServiceAccount default efs-provisioner
Traceback (most recent call last):
  File "/usr/local/bin/forge/.bootstrap/_pex/pex.py", line 367, in execute
  File "/usr/local/bin/forge/.bootstrap/_pex/pex.py", line 293, in _wrap_coverage
  File "/usr/local/bin/forge/.bootstrap/_pex/pex.py", line 325, in _wrap_profiling
  File "/usr/local/bin/forge/.bootstrap/_pex/pex.py", line 410, in _execute
  File "/usr/local/bin/forge/.bootstrap/_pex/pex.py", line 468, in execute_entry
  File "/usr/local/bin/forge/.bootstrap/_pex/pex.py", line 486, in execute_pkg_resources
  File "/Users/nuada/.pex/install/Forge-0.4.15-py2-none-any.whl.9231fb8ee2b34ba80e2fa9fab3e8592e4ca4ae54/Forge-0.4.15-py2-none-any.whl/forge/cli.py", line 370, in call_main
    exit(forge())
  File "/Users/nuada/.pex/install/click-6.7-py2.py3-none-any.whl.6d9ff910081ac14222b6215822bc2664662de745/click-6.7-py2.py3-none-any.whl/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/Users/nuada/.pex/install/click-6.7-py2.py3-none-any.whl.6d9ff910081ac14222b6215822bc2664662de745/click-6.7-py2.py3-none-any.whl/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/Users/nuada/.pex/install/click-6.7-py2.py3-none-any.whl.6d9ff910081ac14222b6215822bc2664662de745/click-6.7-py2.py3-none-any.whl/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/nuada/.pex/install/click-6.7-py2.py3-none-any.whl.6d9ff910081ac14222b6215822bc2664662de745/click-6.7-py2.py3-none-any.whl/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/nuada/.pex/install/click-6.7-py2.py3-none-any.whl.6d9ff910081ac14222b6215822bc2664662de745/click-6.7-py2.py3-none-any.whl/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/Users/nuada/.pex/install/click-6.7-py2.py3-none-any.whl.6d9ff910081ac14222b6215822bc2664662de745/click-6.7-py2.py3-none-any.whl/click/decorators.py", line 27, in new_func
    return f(get_current_context().obj, *args, **kwargs)
  File "/Users/nuada/.pex/install/Forge-0.4.15-py2-none-any.whl.9231fb8ee2b34ba80e2fa9fab3e8592e4ca4ae54/Forge-0.4.15-py2-none-any.whl/forge/tasks.py", line 252, in __call__
    return result.get()
  File "/Users/nuada/.pex/install/Forge-0.4.15-py2-none-any.whl.9231fb8ee2b34ba80e2fa9fab3e8592e4ca4ae54/Forge-0.4.15-py2-none-any.whl/forge/executor.py", line 409, in do_run
    result.value = fun(*args, **kwargs)
  File "/Users/nuada/.pex/install/Forge-0.4.15-py2-none-any.whl.9231fb8ee2b34ba80e2fa9fab3e8592e4ca4ae54/Forge-0.4.15-py2-none-any.whl/forge/cli.py", line 365, in delete
    kube.delete(labels)
  File "/Users/nuada/.pex/install/Forge-0.4.15-py2-none-any.whl.9231fb8ee2b34ba80e2fa9fab3e8592e4ca4ae54/Forge-0.4.15-py2-none-any.whl/forge/tasks.py", line 252, in __call__
    return result.get()
  File "/Users/nuada/.pex/install/Forge-0.4.15-py2-none-any.whl.9231fb8ee2b34ba80e2fa9fab3e8592e4ca4ae54/Forge-0.4.15-py2-none-any.whl/forge/executor.py", line 409, in do_run
    result.value = fun(*args, **kwargs)
  File "/Users/nuada/.pex/install/Forge-0.4.15-py2-none-any.whl.9231fb8ee2b34ba80e2fa9fab3e8592e4ca4ae54/Forge-0.4.15-py2-none-any.whl/forge/kubernetes.py", line 259, in delete
    kind, namespace, name = parts
ValueError: too many values to unpack