kubernetes-sigs / cli-utils

This repo contains binaries that built from libraries in cli-runtime.
Apache License 2.0
155 stars 77 forks source link

fix: do not panic when the inventory object is missing #597

Closed gautierdelorme closed 2 years ago

gautierdelorme commented 2 years ago

fixes https://github.com/kubernetes-sigs/cli-utils/issues/595

This patch adds back the user-friendly message when the inventory object is missing.

Before

$ kapply apply /foo/bar
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x4354dc2]

goroutine 162 [running]:
k8s.io/apimachinery/pkg/apis/meta/v1/unstructured.(*Unstructured).GetLabels(...)

After

$ kapply apply /foo/bar
Package uninitialized. Please run "init" command.

The package needs to be initialized to generate the template
which will store state for resource sets. This state is
necessary to perform functionality such as deleting an entire
package or automatically deleting omitted resources (pruning).
k8s-ci-robot commented 2 years ago

Welcome @gautierdelorme!

It looks like this is your first PR to kubernetes-sigs/cli-utils 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-sigs/cli-utils has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. :smiley:

k8s-ci-robot commented 2 years ago

Hi @gautierdelorme. Thanks for your PR.

I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md). If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
karlkfi commented 2 years ago

/ok-to-test

karlkfi commented 2 years ago

@seans3 are you ok with this? Seems ok with me, based on reasoning in https://github.com/kubernetes-sigs/cli-utils/issues/595

gautierdelorme commented 2 years ago

Just fixed the lint error in https://github.com/kubernetes-sigs/cli-utils/pull/597/commits/38ab8f92b6adba86f491244201250c212d1c8570 to use a switch statement instead of if.

seans3 commented 2 years ago

/lgtm

seans3 commented 2 years ago

Sean Sullivan are you ok with this? Seems ok with me, based on reasoning in #595

Yes, I'm OK with it. I've lgtm'ed. I'll let you approve if/when you're ok.

karlkfi commented 2 years ago

/approve

Thanks @gautierdelorme!

k8s-ci-robot commented 2 years ago

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: gautierdelorme, karlkfi

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files: - ~~[OWNERS](https://github.com/kubernetes-sigs/cli-utils/blob/master/OWNERS)~~ [karlkfi] Approvers can indicate their approval by writing `/approve` in a comment Approvers can cancel approval by writing `/approve cancel` in a comment