Skip to content

Conversation

@thaJeztah
Copy link
Member

@thaJeztah thaJeztah commented Jun 29, 2024

libct/userns: change RunningInUserNS to a wrapper instead of an alias

This was a poor decision on my side; 4316df8 (#2850)
moved this utility to a separate package, and split the exported function
from the implementation (and stubs). Out of convenience, I used an alias
for the latter part, but there's two downsides to that;

  • RunningInUserNS being an exported var means that (technically) it can
    be replaced by other code; perhaps that's a "feature", but not one we
    intended it to be used for.
  • RunningInUserNS being implemented through a var / alias means it's
    also documented as such on pkg.go.dev, which is confusing.

This patch changes it to a regular function, acting as a wrapper for
the underlying implementations. While at it, also slightly touching
up the GoDoc to describe its functionality / behavior.

libct/userns: make fuzzer Linux-only, and remove stub for uidMapInUserNS

The fuzzer for this only runs on Linux; rename the file to be Linux-only
so that we don't have to stub out the uidMapInUserNS function.

libct/userns: implement RunningInUserNS with sync.OnceValue

Now that we dropped support for go < 1.21, we can use this; moving
the sync.once out of the runningInUserNS() implementation would also
allow for it to be more easily tested if we'd decide to.

Copy link
Contributor

@kolyshkin kolyshkin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in commit message: s/ asd / as /.

thaJeztah added 3 commits July 1, 2024 19:20
This was a poor decision on my side; 4316df8
moved this utility to a separate package, and split the exported function
from the implementation (and stubs). Out of convenience, I used an alias
for the latter part, but there's two downsides to that;

- `RunningInUserNS` being an exported var means that (technically) it can
  be replaced by other code; perhaps that's a "feature", but not one we
  intended it to be used for.
- `RunningInUserNS` being implemented through a var / alias means it's
  also documented as such on [pkg.go.dev], which is confusing.

This patch changes it to a regular function, acting as a wrapper for
the underlying implementations. While at it, also slightly touching
up the GoDoc to describe its functionality / behavior.

[pkg.go.dev]: https://pkg.go.dev/github.com/opencontainers/runc@v1.1.13/libcontainer/userns#RunningInUserNS

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
The fuzzer for this only runs on Linux; rename the file to be Linux-only
so that we don't have to stub out the uidMapInUserNS function.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Now that we dropped support for go < 1.21, we can use this; moving
the sync.once out of the runningInUserNS() implementation would also
allow for it to be more easily tested if we'd decide to.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Comment on lines 1 to 2
//go:build linux && gofuzz
// +build linux,gofuzz
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs a rebase as #4329 is now merged

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Just did; also fixed the commit message 👍 🫶

Copy link
Contributor

@kolyshkin kolyshkin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm aside from a couple of nits

@kolyshkin kolyshkin enabled auto-merge July 1, 2024 17:23
@thaJeztah
Copy link
Member Author

I think CentOS 7 may be really gone now?

⚠️ Failed to start an instance: INVALID_ARGUMENT: Not Found 404 Not Found
POST [https://compute.googleapis.com:443/compute/v1/projects/cirrus-ci-community/zones/us-central1-c/instances](https://compute.googleapis.com/compute/v1/projects/cirrus-ci-community/zones/us-central1-c/instances)
{
"error": {
"code": 404,
"message": "The resource 'projects/centos-cloud/global/images/family/centos-7' was not found",
"errors": [
{
"message": "The resource 'projects/centos-cloud/global/images/family/centos-7' was not found",
"domain": "global",
"reason": "notFound"
}
]
}
}

@kolyshkin kolyshkin merged commit cc06259 into opencontainers:main Jul 1, 2024
@thaJeztah thaJeztah deleted the better_alias branch July 1, 2024 20:06
@lifubang lifubang mentioned this pull request Aug 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/refactor refactoring

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants