pulumi / crd2pulumi

Generate typed CustomResources from a Kubernetes CustomResourceDefinition
Apache License 2.0
99 stars 17 forks source link

crontabs default example not working on python "pkg_resources.DistributionNotFound" #106

Open notdodo opened 1 year ago

notdodo commented 1 year ago

What happened?

Following the python example to create CRDs inside pulumi during the pulumi up command the following error is returned:

pulumi:pulumi:Stack (pulumi-k8s-pulumi-k8s):
error: Program failed with an unhandled exception:
Traceback (most recent call last):
File "/path/path/pulumi-k8s/./__main__.py", line 42, in <module>
import crontabs.pulumi_crds as crontabs
File "/path/path/pulumi-k8s/./crontabs/pulumi_crds/__init__.py", line 5, in <module>
from . import _utilities
File "/path/path/pulumi-k8s/./crontabs/pulumi_crds/_utilities.py", line 94, in <module>
_version = _get_semver_version()
File "/path/path/pulumi-k8s/./crontabs/pulumi_crds/_utilities.py", line 73, in _get_semver_version
pep440_version_string = pkg_resources.require(root_package)[0].version
File "/path/path/pulumi-k8s/.venv/lib/python3.10/site-packages/pkg_resources/__init__.py", line 909, in require
needed = self.resolve(parse_requirements(requirements))
File "/path/path/pulumi-k8s/.venv/lib/python3.10/site-packages/pkg_resources/__init__.py", line 795, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'crontabs' distribution was not found and is required by the application

Changing the import from import crontabs.pulumi_crds as crontabs to import crontabs as crontabs solve the pkg_resources error but the usage of the module is impacted.

import crontabs as crontabs

# Register the CronTab CRD.
crontab_definition = k8s.yaml.ConfigFile(
    "my-crontab-definition", file="customresources.yaml"
)

# Instantiate a CronTab resource.
crontab_instance = crontabs.stable.v1.CronTab(
    "my-new-cron-object",
    metadata=k8s.meta.v1.ObjectMetaArgs(name="my-new-cron-object"),
    spec=crontabs.stable.v1.CronTabSpecArgs(
        cron_spec="* * * */5",
        image="my-awesome-cron-image",
    ),
)

the error returned is now:

error: Program failed with an unhandled exception:
Traceback (most recent call last):
File "/path/path/pulumi-k8s/./__main__.py", line 50, in <module>
crontab_instance = crontabs.stable.v1.CronTab(
AttributeError: module 'crontabs' has no attribute 'stable'

Expected Behavior

import of the module works and it's usable to create CRDs from python

Steps to reproduce

1- download the yaml for the CRDs for crontabs from the example 2- crd2pulumi --pythonPath ./crontabs customresources.yaml 3- use the module

Output of pulumi about

CLI          
Version      3.53.1
Go Version   go1.19.5
Go Compiler  gc

Plugins
NAME                     VERSION
command                  0.7.1-alpha.1674088865
crds                     0.0.0
kubernetes               3.24.0-alpha.1675102241
kubernetes-cert-manager  0.0.5
python                   unknown

Host     
OS       ubuntu
Version  22.04
Arch     x86_64

Additional context

No response

Contributing

Vote on this issue by adding a 👍 reaction. To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

AaronFriel commented 1 year ago

Hey @notdodo, thanks for the bug report. We're currently determining how to integrate crd2pulumi into our other migration tools. I expect crd2pulumi to be in maintenance mode until we've decided how to do that.

Could you tell me a little more about your use case for crd2pulumi?

In the mean time we'll keep this issue open as it's a valid bug report.

notdodo commented 1 year ago

Hi @AaronFriel, the use case is simply to use it to have pulumi CRDs for ECK (https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-deploy-eck.html) instead of manually writing pulumi resources or using yaml files.

AaronFriel commented 1 year ago

That makes sense, thanks.

lingxiankong commented 1 year ago

@AaronFriel Hi any update on this please? I'm seeing the same issue, the use case is the same, integrating CRD in the pulumi code using python.

after-ephemera commented 1 year ago

I'm also running into this issue with python and crd2pulumi

cleverguy25 commented 3 months ago

Added to epic https://github.com/pulumi/home/issues/3431