Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restrict component identifiers character set #9208

Closed
mx-psi opened this issue Jan 3, 2024 · 0 comments · Fixed by #9472
Closed

Restrict component identifiers character set #9208

mx-psi opened this issue Jan 3, 2024 · 0 comments · Fixed by #9472
Labels
area:component priority:p1 High release:required-for-ga Must be resolved before GA release

Comments

@mx-psi
Copy link
Member

mx-psi commented Jan 3, 2024

Similar to what we did for feature gates on #8766, we should have a clear idea on what characters we want to allow on component names and verify it.

At a minimum, we want to disallow / characters in the component name and have the component name not be empty. My proposal would be to further restrict this for now to an ASCII alphanumeric + _ identifier, starting with an ASCII alphabetic character.

This would be a breaking change, so it is needed before GA of the component package. We should do it as part of building a component.Type or a component.ID.

@mx-psi mx-psi added release:required-for-ga Must be resolved before GA release priority:p1 High area:component labels Jan 3, 2024
mx-psi added a commit that referenced this issue Feb 2, 2024
**Description:** 

- Adds `component.MustNewType` to create a type. This function panics if
the type has invalid characters. Add similar functions
`component.MustNewID` and `component.MustNewIDWithName`.
- Adds `component.Type.String` to recover the string
- Use `component.MustNewType`, `component.MustNewID`,
`component.MustNewIDWithName` and `component.Type.String` everywhere in
this codebase. To do this I changed `component.Type` into an opaque
struct and checked for compile-time errors.

Some notes:

1. All components currently on core and contrib follow this rule. This
is still breaking for other components.
2. A future PR will change this into a struct, to actually validate this
(right now you can just do `component.Type("anything")` to bypass
validation). I want to do this in two steps to avoid breaking contrib
tests: we first introduce this function, and after that we change into a
struct.

**Link to tracking Issue:** Updates #9208
mx-psi added a commit to open-telemetry/opentelemetry-collector-contrib that referenced this issue Feb 6, 2024
**Description:** 

Follow up to open-telemetry/opentelemetry-collector/pull/9414, adds the
same changes in `mdatagen` regarding validation of `component.Type`s.

On this PR the validation logic and templating is a bit more complex
because of subcomponents. I will add these changes back on core once
this PR is merged.

**Link to tracking Issue:**
open-telemetry/opentelemetry-collector/issues/9208
mx-psi added a commit to open-telemetry/opentelemetry-collector-contrib that referenced this issue Feb 8, 2024
…ame` when passing literal strings (#31125)

**Description:** 

Runs the following commands:

- `rg "component.NewID\(\".*?\"\)" -l | xargs sd
'component.NewID\((".*?")\)' 'component.MustNewID($1)'`
- `rg "component.NewIDWithName\(\".*?\"" -l | xargs sd
'component.NewIDWithName\((".*?")' 'component. MustNewIDWithName($1'`

Additionally, makes some manual fixes

Needed for open-telemetry/opentelemetry-collector/pull/9472

**Link to tracking Issue:**
open-telemetry/opentelemetry-collector/issues/9208
mx-psi added a commit to open-telemetry/opentelemetry-collector-contrib that referenced this issue Feb 8, 2024
mx-psi added a commit to open-telemetry/opentelemetry-collector-contrib that referenced this issue Feb 8, 2024
anthoai97 pushed a commit to anthoai97/opentelemetry-collector-contrib that referenced this issue Feb 12, 2024
…1038)

**Description:** 

Follow up to open-telemetry/opentelemetry-collector/pull/9414, adds the
same changes in `mdatagen` regarding validation of `component.Type`s.

On this PR the validation logic and templating is a bit more complex
because of subcomponents. I will add these changes back on core once
this PR is merged.

**Link to tracking Issue:**
open-telemetry/opentelemetry-collector/issues/9208
anthoai97 pushed a commit to anthoai97/opentelemetry-collector-contrib that referenced this issue Feb 12, 2024
…ame` when passing literal strings (open-telemetry#31125)

**Description:** 

Runs the following commands:

- `rg "component.NewID\(\".*?\"\)" -l | xargs sd
'component.NewID\((".*?")\)' 'component.MustNewID($1)'`
- `rg "component.NewIDWithName\(\".*?\"" -l | xargs sd
'component.NewIDWithName\((".*?")' 'component. MustNewIDWithName($1'`

Additionally, makes some manual fixes

Needed for open-telemetry/opentelemetry-collector/pull/9472

**Link to tracking Issue:**
open-telemetry/opentelemetry-collector/issues/9208
anthoai97 pushed a commit to anthoai97/opentelemetry-collector-contrib that referenced this issue Feb 12, 2024
anthoai97 pushed a commit to anthoai97/opentelemetry-collector-contrib that referenced this issue Feb 12, 2024
mx-psi added a commit to open-telemetry/opentelemetry-collector-contrib that referenced this issue Feb 14, 2024
)

**Description:** Passes a `component.Type` to
`NewDefaultScraperControllerSettings` in the `hostmetrics` receiver
tests.

**Link to tracking Issue:**
open-telemetry/opentelemetry-collector/issues/9208
mx-psi added a commit to open-telemetry/opentelemetry-collector-contrib that referenced this issue Feb 14, 2024
**Description:** Fixes configschema uses of `component.Type`

**Link to tracking Issue:**
open-telemetry/opentelemetry-collector/issues/9208
mx-psi added a commit that referenced this issue Mar 6, 2024
XinRanZhAWS pushed a commit to XinRanZhAWS/opentelemetry-collector-contrib that referenced this issue Mar 13, 2024
…n-telemetry#31257)

**Description:** Passes a `component.Type` to
`NewDefaultScraperControllerSettings` in the `hostmetrics` receiver
tests.

**Link to tracking Issue:**
open-telemetry/opentelemetry-collector/issues/9208
XinRanZhAWS pushed a commit to XinRanZhAWS/opentelemetry-collector-contrib that referenced this issue Mar 13, 2024
**Description:** Fixes configschema uses of `component.Type`

**Link to tracking Issue:**
open-telemetry/opentelemetry-collector/issues/9208
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:component priority:p1 High release:required-for-ga Must be resolved before GA release
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

1 participant