Skip to content

Add ability to rename host inventory variables using patterns #1273

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

Conversation

href
Copy link
Contributor

@href href commented Jun 19, 2024

Related Issue

None.

New Behavior

Certain environments may have conflicts with the variables given by Netbox, and the variables used in the existing Ansible codebase.

With this change, such cases can be worked around by renaming individual variables, or whole groups of them.

For example, this will rename all cluster* variables to have a netbox__ prefix instead (e.g., cluster_group -> netbox__cluster_group):

rename_variables:
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'

Uses a list, instead of a dict, to ensure that the order of evaluation is strictly defined across all Python versions, and to add the ability to exclude certain variables from being rewritten. For example:

rename_variables:
  # Keep cluster_type the same
  - pattern: 'cluster_type'
    repl: 'cluster_type'

  # Rename all other cluster* variables
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'

Contrast to Current Behavior

Currently, the variable names are hard-coded and cannot be modified.

Discussion: Benefits and Drawbacks

With this change, it becomes easier to adapt Netbox to code-bases where some of the variables found in Netbox already have a meaning.

The change is purely optional, so anyone that does not need it, can just ignore it.

Changes to the Documentation

The documentation is updated in the module. I assume this will be published once merged.

Proposed Release Note Entry

Add ability to rename host inventory variables using patterns, to avoid conflicts with existing variables.

...

Double Check

  • I have read the comments and followed the CONTRIBUTING.md.
  • I have explained my PR according to the information in the comments or in a linked issue.
  • My PR targets the devel branch.

@rodvand
Copy link
Contributor

rodvand commented Jun 21, 2024

This looks like a sensible change - could you:

@href
Copy link
Contributor Author

href commented Jun 22, 2024

Sure, let me get back to you on that.

@href href force-pushed the denis/rename-inventory-variables branch 7 times, most recently from 201e80a to fb0b7ef Compare June 24, 2024 14:22
Certain environments may have conflicts with the variables given by
Netbox, and the variables used in the existing Ansible codebase.

With this change, such cases can be worked around by renaming individual
variables, or whole groups of them.

For example, this will rename all `cluster*` variables to have a
`netbox__` prefix instead (e.g., `cluster_group` -> `netbox__cluster_group`):

```yaml
rename_variables:
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

Uses a list, instead of a dict, to ensure that the order of evaluation
is strictly defined across all Python versions, and to add the ability
to exclude certain variables from being rewritten. For example:

```yaml
rename_variables:
  # Keep cluster_type the same
  - pattern: 'cluster_type'
    repl: 'cluster_type'

  # Rename all other cluster* variables
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```
@href href force-pushed the denis/rename-inventory-variables branch from fb0b7ef to 2de8321 Compare June 24, 2024 14:30
@href
Copy link
Contributor Author

href commented Jun 25, 2024

Please take another look, I've got the tests to pass and added a simple unit test.

@rodvand rodvand merged commit a271a54 into netbox-community:devel Jul 2, 2024
50 checks passed
href added a commit to cloudscale-ch/netbox-community.ansible_modules that referenced this pull request Jul 3, 2024
…-community#1273)

Certain environments may have conflicts with the variables given by
Netbox, and the variables used in the existing Ansible codebase.

With this change, such cases can be worked around by renaming individual
variables, or whole groups of them.

For example, this will rename all `cluster*` variables to have a
`netbox__` prefix instead (e.g., `cluster_group` -> `netbox__cluster_group`):

```yaml
rename_variables:
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

Uses a list, instead of a dict, to ensure that the order of evaluation
is strictly defined across all Python versions, and to add the ability
to exclude certain variables from being rewritten. For example:

```yaml
rename_variables:
  # Keep cluster_type the same
  - pattern: 'cluster_type'
    repl: 'cluster_type'

  # Rename all other cluster* variables
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```
href added a commit to cloudscale-ch/netbox-community.ansible_modules that referenced this pull request Jul 5, 2024
…-community#1273)

Certain environments may have conflicts with the variables given by
Netbox, and the variables used in the existing Ansible codebase.

With this change, such cases can be worked around by renaming individual
variables, or whole groups of them.

For example, this will rename all `cluster*` variables to have a
`netbox__` prefix instead (e.g., `cluster_group` -> `netbox__cluster_group`):

```yaml
rename_variables:
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

Uses a list, instead of a dict, to ensure that the order of evaluation
is strictly defined across all Python versions, and to add the ability
to exclude certain variables from being rewritten. For example:

```yaml
rename_variables:
  # Keep cluster_type the same
  - pattern: 'cluster_type'
    repl: 'cluster_type'

  # Rename all other cluster* variables
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

(cherry picked from commit a271a54)
k-304 pushed a commit to cloudscale-ch/netbox-community.ansible_modules that referenced this pull request Apr 1, 2025
…-community#1273)

Certain environments may have conflicts with the variables given by
Netbox, and the variables used in the existing Ansible codebase.

With this change, such cases can be worked around by renaming individual
variables, or whole groups of them.

For example, this will rename all `cluster*` variables to have a
`netbox__` prefix instead (e.g., `cluster_group` -> `netbox__cluster_group`):

```yaml
rename_variables:
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

Uses a list, instead of a dict, to ensure that the order of evaluation
is strictly defined across all Python versions, and to add the ability
to exclude certain variables from being rewritten. For example:

```yaml
rename_variables:
  # Keep cluster_type the same
  - pattern: 'cluster_type'
    repl: 'cluster_type'

  # Rename all other cluster* variables
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

(cherry picked from commit a271a54)
k-304 pushed a commit to cloudscale-ch/netbox-community.ansible_modules that referenced this pull request Apr 1, 2025
…-community#1273)

Certain environments may have conflicts with the variables given by
Netbox, and the variables used in the existing Ansible codebase.

With this change, such cases can be worked around by renaming individual
variables, or whole groups of them.

For example, this will rename all `cluster*` variables to have a
`netbox__` prefix instead (e.g., `cluster_group` -> `netbox__cluster_group`):

```yaml
rename_variables:
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

Uses a list, instead of a dict, to ensure that the order of evaluation
is strictly defined across all Python versions, and to add the ability
to exclude certain variables from being rewritten. For example:

```yaml
rename_variables:
  # Keep cluster_type the same
  - pattern: 'cluster_type'
    repl: 'cluster_type'

  # Rename all other cluster* variables
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

(cherry picked from commit a271a54)
k-304 pushed a commit to cloudscale-ch/netbox-community.ansible_modules that referenced this pull request Apr 7, 2025
…-community#1273)

Certain environments may have conflicts with the variables given by
Netbox, and the variables used in the existing Ansible codebase.

With this change, such cases can be worked around by renaming individual
variables, or whole groups of them.

For example, this will rename all `cluster*` variables to have a
`netbox__` prefix instead (e.g., `cluster_group` -> `netbox__cluster_group`):

```yaml
rename_variables:
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

Uses a list, instead of a dict, to ensure that the order of evaluation
is strictly defined across all Python versions, and to add the ability
to exclude certain variables from being rewritten. For example:

```yaml
rename_variables:
  # Keep cluster_type the same
  - pattern: 'cluster_type'
    repl: 'cluster_type'

  # Rename all other cluster* variables
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```
k-304 pushed a commit to cloudscale-ch/netbox-community.ansible_modules that referenced this pull request Apr 7, 2025
…-community#1273)

Certain environments may have conflicts with the variables given by
Netbox, and the variables used in the existing Ansible codebase.

With this change, such cases can be worked around by renaming individual
variables, or whole groups of them.

For example, this will rename all `cluster*` variables to have a
`netbox__` prefix instead (e.g., `cluster_group` -> `netbox__cluster_group`):

```yaml
rename_variables:
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

Uses a list, instead of a dict, to ensure that the order of evaluation
is strictly defined across all Python versions, and to add the ability
to exclude certain variables from being rewritten. For example:

```yaml
rename_variables:
  # Keep cluster_type the same
  - pattern: 'cluster_type'
    repl: 'cluster_type'

  # Rename all other cluster* variables
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

(cherry picked from commit a271a54)
k-304 pushed a commit to cloudscale-ch/netbox-community.ansible_modules that referenced this pull request Apr 7, 2025
…-community#1273)

Certain environments may have conflicts with the variables given by
Netbox, and the variables used in the existing Ansible codebase.

With this change, such cases can be worked around by renaming individual
variables, or whole groups of them.

For example, this will rename all `cluster*` variables to have a
`netbox__` prefix instead (e.g., `cluster_group` -> `netbox__cluster_group`):

```yaml
rename_variables:
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

Uses a list, instead of a dict, to ensure that the order of evaluation
is strictly defined across all Python versions, and to add the ability
to exclude certain variables from being rewritten. For example:

```yaml
rename_variables:
  # Keep cluster_type the same
  - pattern: 'cluster_type'
    repl: 'cluster_type'

  # Rename all other cluster* variables
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```
k-304 pushed a commit to cloudscale-ch/netbox-community.ansible_modules that referenced this pull request Apr 7, 2025
…-community#1273)

Certain environments may have conflicts with the variables given by
Netbox, and the variables used in the existing Ansible codebase.

With this change, such cases can be worked around by renaming individual
variables, or whole groups of them.

For example, this will rename all `cluster*` variables to have a
`netbox__` prefix instead (e.g., `cluster_group` -> `netbox__cluster_group`):

```yaml
rename_variables:
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

Uses a list, instead of a dict, to ensure that the order of evaluation
is strictly defined across all Python versions, and to add the ability
to exclude certain variables from being rewritten. For example:

```yaml
rename_variables:
  # Keep cluster_type the same
  - pattern: 'cluster_type'
    repl: 'cluster_type'

  # Rename all other cluster* variables
  - pattern: 'cluster(.*)'
    repl: 'netbox__cluster\1'
```

(cherry picked from commit a271a54)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants