Repository: kubermatic/machine-controller
Pull request #1410 (2022-08-16 11:03:57)

Anexia: return reserved IP when instance IPs are requested
**What this PR does / why we need it**:

When creating a machine at, we always first reserve an IP address for it. Later when retrieving the addresses of that machine, we rely on the vminfo API, which has some delay as it retrieves the IPs from the running VM.

This commit adds the reserved address to the list of addresses returned from an instance, which should reduce provisioning time a bit and make it more stable.

Also fixes a long-standing TODO comment: marking internal IPs as internal.

**What type of PR is this?**

/kind feature

**Special notes for your reviewer**:

[As per this comment](https://github.com/kubermatic/machine-controller/pull/1405#issuecomment-1216429137)

**Does this PR introduce a user-facing change? Then add your Release Note here**:
<!--
Write your release note:
1. Enter your extended release note in the below block. If the PR requires additional action from users switching to the new release, include the string "action required".
2. If no release note is required, just write "NONE".
-->
```release-note
NONE
```

**Documentation**:
<!--
Please do one of the following options:
- Add a link to the existing documentation
- Add a link to the kubermatic/docs pull request
- If no documentation change is applicable then add:
  - TBD (documentation will be added later)
  - NONE (no documentation needed for this PR)
-->
```documentation
NONE
```


kubermatic-bot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by: *<a href="https://github.com/kubermatic/machine-controller/pull/1410#" title="Author self-approved">LittleFox94</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **moadqassem** after the PR has been reviewed.
You can assign the PR to them by writing `/assign @moadqassem` in a comment when ready.

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=kubermatic%2Fmachine-controller).

<details open>
Needs approval from an approver in each of these files:

- **[pkg/cloudprovider/provider/OWNERS](https://github.com/kubermatic/machine-controller/blob/master/pkg/cloudprovider/provider/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["moadqassem"]} -->
kubermatic-bot: Hi @LittleFox94. Thanks for your PR.

I'm waiting for a [kubermatic](https://github.com/orgs/kubermatic/people) 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](https://github.com/orgs/kubermatic/people) 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](https://go.k8s.io/bot-commands?repo=kubermatic%2Fmachine-controller).

<details>

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.
</details>

ahmedwaleedmalik: /ok-to-test
kubermatic-bot: @LittleFox94: The following test **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
pull-machine-controller-e2e-ubuntu-upgrade | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-ubuntu-upgrade/1559805113617354752) | true | `/test pull-machine-controller-e2e-ubuntu-upgrade`

[Full PR test history](https://public-prow.loodse.com/pr-history?org=kubermatic&repo=machine-controller&pr=1410)

<details>

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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
kubermatic-bot: @LittleFox94: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
pull-machine-controller-e2e-ubuntu-upgrade | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-ubuntu-upgrade/1559805113617354752) | true | `/test pull-machine-controller-e2e-ubuntu-upgrade`
pull-machine-controller-e2e-vsphere | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-vsphere/1559805121779470336) | true | `/test pull-machine-controller-e2e-vsphere`

[Full PR test history](https://public-prow.loodse.com/pr-history?org=kubermatic&repo=machine-controller&pr=1410)

<details>

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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
kubermatic-bot: @LittleFox94: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
pull-machine-controller-e2e-ubuntu-upgrade | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-ubuntu-upgrade/1559805113617354752) | true | `/test pull-machine-controller-e2e-ubuntu-upgrade`
pull-machine-controller-e2e-vsphere | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-vsphere/1559805121779470336) | true | `/test pull-machine-controller-e2e-vsphere`
pull-machine-controller-e2e-openstack-project-auth | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-openstack-project-auth/1559805120940609536) | true | `/test pull-machine-controller-e2e-openstack-project-auth`

[Full PR test history](https://public-prow.loodse.com/pr-history?org=kubermatic&repo=machine-controller&pr=1410)

<details>

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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
kubermatic-bot: @LittleFox94: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
pull-machine-controller-e2e-ubuntu-upgrade | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-ubuntu-upgrade/1559805113617354752) | true | `/test pull-machine-controller-e2e-ubuntu-upgrade`
pull-machine-controller-e2e-vsphere | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-vsphere/1559805121779470336) | true | `/test pull-machine-controller-e2e-vsphere`
pull-machine-controller-e2e-openstack-project-auth | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-openstack-project-auth/1559805120940609536) | true | `/test pull-machine-controller-e2e-openstack-project-auth`
pull-machine-controller-e2e-openstack | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-openstack/1559805120114331648) | true | `/test pull-machine-controller-e2e-openstack`

[Full PR test history](https://public-prow.loodse.com/pr-history?org=kubermatic&repo=machine-controller&pr=1410)

<details>

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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
kubermatic-bot: @LittleFox94: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
pull-machine-controller-e2e-ubuntu-upgrade | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-ubuntu-upgrade/1559805113617354752) | true | `/test pull-machine-controller-e2e-ubuntu-upgrade`
pull-machine-controller-e2e-vsphere | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-vsphere/1559805121779470336) | true | `/test pull-machine-controller-e2e-vsphere`
pull-machine-controller-e2e-openstack-project-auth | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-openstack-project-auth/1559805120940609536) | true | `/test pull-machine-controller-e2e-openstack-project-auth`
pull-machine-controller-e2e-openstack | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-openstack/1559805120114331648) | true | `/test pull-machine-controller-e2e-openstack`
pull-machine-controller-e2e-aws-arm | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-aws-arm/1559805113822875648) | true | `/test pull-machine-controller-e2e-aws-arm`

[Full PR test history](https://public-prow.loodse.com/pr-history?org=kubermatic&repo=machine-controller&pr=1410)

<details>

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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
ahmedwaleedmalik: /retest
kubermatic-bot: @LittleFox94: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
pull-machine-controller-e2e-vsphere | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-vsphere/1559805121779470336) | true | `/test pull-machine-controller-e2e-vsphere`
pull-machine-controller-e2e-openstack-project-auth | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-openstack-project-auth/1559805120940609536) | true | `/test pull-machine-controller-e2e-openstack-project-auth`
pull-machine-controller-e2e-openstack | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-openstack/1559805120114331648) | true | `/test pull-machine-controller-e2e-openstack`
pull-machine-controller-e2e-ubuntu-upgrade | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-ubuntu-upgrade/1561970647414870016) | true | `/test pull-machine-controller-e2e-ubuntu-upgrade`

[Full PR test history](https://public-prow.loodse.com/pr-history?org=kubermatic&repo=machine-controller&pr=1410)

<details>

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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
kubermatic-bot: @LittleFox94: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
pull-machine-controller-e2e-vsphere | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-vsphere/1559805121779470336) | true | `/test pull-machine-controller-e2e-vsphere`
pull-machine-controller-e2e-openstack | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-openstack/1559805120114331648) | true | `/test pull-machine-controller-e2e-openstack`
pull-machine-controller-e2e-ubuntu-upgrade | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-ubuntu-upgrade/1561970647414870016) | true | `/test pull-machine-controller-e2e-ubuntu-upgrade`
pull-machine-controller-e2e-openstack-project-auth | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-openstack-project-auth/1561970647570059264) | true | `/test pull-machine-controller-e2e-openstack-project-auth`

[Full PR test history](https://public-prow.loodse.com/pr-history?org=kubermatic&repo=machine-controller&pr=1410)

<details>

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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
kubermatic-bot: @LittleFox94: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
pull-machine-controller-e2e-vsphere | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-vsphere/1559805121779470336) | true | `/test pull-machine-controller-e2e-vsphere`
pull-machine-controller-e2e-ubuntu-upgrade | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-ubuntu-upgrade/1561970647414870016) | true | `/test pull-machine-controller-e2e-ubuntu-upgrade`
pull-machine-controller-e2e-openstack-project-auth | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-openstack-project-auth/1561970647570059264) | true | `/test pull-machine-controller-e2e-openstack-project-auth`
pull-machine-controller-e2e-openstack | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-openstack/1561970647519727616) | true | `/test pull-machine-controller-e2e-openstack`

[Full PR test history](https://public-prow.loodse.com/pr-history?org=kubermatic&repo=machine-controller&pr=1410)

<details>

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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
kubermatic-bot: @LittleFox94: The following tests **failed**, say `/retest` to rerun all failed tests or `/retest-required` to rerun all mandatory failed tests:

Test name | Commit | Details | Required | Rerun command
--- | --- | --- | --- | ---
pull-machine-controller-e2e-ubuntu-upgrade | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-ubuntu-upgrade/1561970647414870016) | true | `/test pull-machine-controller-e2e-ubuntu-upgrade`
pull-machine-controller-e2e-openstack-project-auth | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-openstack-project-auth/1561970647570059264) | true | `/test pull-machine-controller-e2e-openstack-project-auth`
pull-machine-controller-e2e-openstack | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-openstack/1561970647519727616) | true | `/test pull-machine-controller-e2e-openstack`
pull-machine-controller-e2e-vsphere | 168417f2e71776c98a17d4b4890acc185a1b9d49 | [link](https://public-prow.loodse.com/view/gs/prow-dev-public-data/pr-logs/pull/kubermatic_machine-controller/1410/pull-machine-controller-e2e-vsphere/1561970647616196608) | true | `/test pull-machine-controller-e2e-vsphere`

[Full PR test history](https://public-prow.loodse.com/pr-history?org=kubermatic&repo=machine-controller&pr=1410)

<details>

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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->

Patch:
diff --git a/.prow/provider-vsphere.yaml b/.prow/provider-vsphere.yaml
index 104d807c..ece98554 100644
--- a/.prow/provider-vsphere.yaml
+++ b/.prow/provider-vsphere.yaml
@@ -20,7 +20,7 @@ presubmits:
     labels:
       preset-hetzner: "true"
       preset-e2e-ssh: "true"
-      preset-vsphere-legacy: "true"
+      preset-vsphere: "true"
       preset-rhel: "true"
       preset-goproxy: "true"
       preset-kind-volume-mounts: "true"
diff --git a/examples/operating-system-manager.yaml b/examples/operating-system-manager.yaml
index 15087182..9e513819 100644
--- a/examples/operating-system-manager.yaml
+++ b/examples/operating-system-manager.yaml
@@ -1076,7 +1076,7 @@ spec:
     spec:
       serviceAccountName: operating-system-manager-webhook
       containers:
-        - image: quay.io/kubermatic/operating-system-manager:v0.6.0
+        - image: quay.io/kubermatic/operating-system-manager:v1.0.0
           imagePullPolicy: IfNotPresent
           name: webhook
           command:
@@ -1377,7 +1377,7 @@ spec:
     spec:
       serviceAccountName: operating-system-manager
       containers:
-        - image: quay.io/kubermatic/operating-system-manager:v0.6.0
+        - image: quay.io/kubermatic/operating-system-manager:v1.0.0
           imagePullPolicy: IfNotPresent
           name: operating-system-manager
           command:
diff --git a/go.mod b/go.mod
index 6ece1c6a..bc2ae6ae 100644
--- a/go.mod
+++ b/go.mod
@@ -44,7 +44,7 @@ require (
 	gopkg.in/gcfg.v1 v1.2.3
 	gopkg.in/yaml.v3 v3.0.1
 	// Please ensure that you update the image tags in `examples/operating-system-manager.yaml` as well.
-	k8c.io/operating-system-manager v0.6.0
+	k8c.io/operating-system-manager v1.0.0
 	k8s.io/api v0.24.2
 	k8s.io/apiextensions-apiserver v0.24.2
 	k8s.io/apimachinery v0.24.2
diff --git a/go.sum b/go.sum
index b138f343..a3615c58 100644
--- a/go.sum
+++ b/go.sum
@@ -1521,8 +1521,8 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
 honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
 honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-k8c.io/operating-system-manager v0.6.0 h1:c+WJOV+BlW9NgSi7/QCNKCTXVwcW89s3PlWQDqQBRhA=
-k8c.io/operating-system-manager v0.6.0/go.mod h1:8Q1xpjJomTG9X6lfx/y3+yGHCackHtqxuYEk0TIPMfA=
+k8c.io/operating-system-manager v1.0.0 h1:E1dCaLHypgaaLNgm50jcT3uwk3vok3xWYOnFcspXJ38=
+k8c.io/operating-system-manager v1.0.0/go.mod h1:8Q1xpjJomTG9X6lfx/y3+yGHCackHtqxuYEk0TIPMfA=
 k8s.io/api v0.23.3/go.mod h1:w258XdGyvCmnBj/vGzQMj6kzdufJZVUwEM1U2fRJwSQ=
 k8s.io/api v0.24.2 h1:g518dPU/L7VRLxWfcadQn2OnsiGWVOadTLpdnqgY2OI=
 k8s.io/api v0.24.2/go.mod h1:AHqbSkTm6YrQ0ObxjO3Pmp/ubFF/KuM7jU+3khoBsOg=
diff --git a/pkg/cloudprovider/provider/anexia/instance.go b/pkg/cloudprovider/provider/anexia/instance.go
index cc9a9e60..fa53467a 100644
--- a/pkg/cloudprovider/provider/anexia/instance.go
+++ b/pkg/cloudprovider/provider/anexia/instance.go
@@ -17,6 +17,8 @@ limitations under the License.
 package anexia
 
 import (
+	"net"
+
 	"go.anx.io/go-anxcloud/pkg/vsphere/info"
 
 	"github.com/kubermatic/machine-controller/pkg/cloudprovider/instance"
@@ -26,7 +28,8 @@ import (
 )
 
 type anexiaInstance struct {
-	info *info.Info
+	info              *info.Info
+	reservedAddresses []string
 }
 
 func (ai *anexiaInstance) Name() string {
@@ -52,19 +55,30 @@ func (ai *anexiaInstance) ProviderID() string {
 func (ai *anexiaInstance) Addresses() map[string]v1.NodeAddressType {
 	addresses := map[string]v1.NodeAddressType{}
 
-	if ai.info == nil {
-		return addresses
+	if ai.reservedAddresses != nil {
+		for _, reservedIP := range ai.reservedAddresses {
+			addresses[reservedIP] = v1.NodeExternalIP
+		}
 	}
 
-	for _, network := range ai.info.Network {
-		for _, ip := range network.IPv4 {
-			addresses[ip] = v1.NodeExternalIP
+	if ai.info != nil {
+		for _, network := range ai.info.Network {
+			for _, ip := range network.IPv4 {
+				addresses[ip] = v1.NodeExternalIP
+			}
+			for _, ip := range network.IPv6 {
+				addresses[ip] = v1.NodeExternalIP
+			}
 		}
-		for _, ip := range network.IPv6 {
+	}
+
+	for ip := range addresses {
+		parsed := net.ParseIP(ip)
+		if parsed.IsPrivate() {
+			addresses[ip] = v1.NodeInternalIP
+		} else {
 			addresses[ip] = v1.NodeExternalIP
 		}
-
-		// TODO mark RFC1918 and RFC4193 addresses as internal
 	}
 
 	return addresses
diff --git a/pkg/cloudprovider/provider/anexia/provider.go b/pkg/cloudprovider/provider/anexia/provider.go
index da8718cb..84172372 100644
--- a/pkg/cloudprovider/provider/anexia/provider.go
+++ b/pkg/cloudprovider/provider/anexia/provider.go
@@ -254,7 +254,7 @@ func getIPAddress(ctx context.Context, client anxclient.Client) (string, error)
 
 	// only use IP if it is still unbound
 	if status.ReservedIP != "" && status.IPState == anxtypes.IPStateUnbound {
-		klog.Info("reusing already provisioned ip", "IP", status.ReservedIP)
+		klog.Infof("reusing already provisioned ip %q", status.ReservedIP)
 		return status.ReservedIP, nil
 	}
 
@@ -450,7 +450,7 @@ func (p *provider) Validate(_ context.Context, machinespec clusterv1alpha1.Machi
 func (p *provider) Get(ctx context.Context, machine *clusterv1alpha1.Machine, _ *cloudprovidertypes.ProviderData) (instance.Instance, error) {
 	config, _, err := p.getConfig(machine.Spec.ProviderSpec)
 	if err != nil {
-		return nil, newError(common.InvalidConfigurationMachineError, "failed to parse MachineSpec: %v", err)
+		return nil, newError(common.InvalidConfigurationMachineError, "failed to retrieve config: %v", err)
 	}
 
 	cli, err := getClient(config.Token)
@@ -463,10 +463,17 @@ func (p *provider) Get(ctx context.Context, machine *clusterv1alpha1.Machine, _
 	if err != nil {
 		return nil, newError(common.InvalidConfigurationMachineError, "failed to get machine status: %v", err)
 	}
+
 	if status.InstanceID == "" {
 		return nil, cloudprovidererrors.ErrInstanceNotFound
 	}
 
+	instance := anexiaInstance{}
+
+	if status.IPState == anxtypes.IPStateBound && status.ReservedIP != "" {
+		instance.reservedAddresses = []string{status.ReservedIP}
+	}
+
 	timeoutCtx, cancel := context.WithTimeout(ctx, anxtypes.GetRequestTimeout)
 	defer cancel()
 
@@ -474,10 +481,9 @@ func (p *provider) Get(ctx context.Context, machine *clusterv1alpha1.Machine, _
 	if err != nil {
 		return nil, fmt.Errorf("failed get machine info: %w", err)
 	}
+	instance.info = &info
 
-	return &anexiaInstance{
-		info: &info,
-	}, nil
+	return &instance, nil
 }
 
 func (p *provider) GetCloudConfig(_ clusterv1alpha1.MachineSpec) (string, string, error) {


Test patch:
diff --git a/pkg/cloudprovider/provider/anexia/instance_test.go b/pkg/cloudprovider/provider/anexia/instance_test.go
new file mode 100644
index 00000000..0d7641a5
--- /dev/null
+++ b/pkg/cloudprovider/provider/anexia/instance_test.go
@@ -0,0 +1,127 @@
+/*
+Copyright 2022 The Machine Controller Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package anexia
+
+import (
+	"testing"
+
+	"github.com/gophercloud/gophercloud/testhelper"
+
+	"go.anx.io/go-anxcloud/pkg/vsphere/info"
+	v1 "k8s.io/api/core/v1"
+)
+
+func TestAnexiaInstance(t *testing.T) {
+	addressCheck := func(t *testing.T, testcase string, instance *anexiaInstance, expected map[string]v1.NodeAddressType) {
+		t.Run(testcase, func(t *testing.T) {
+			addresses := instance.Addresses()
+
+			testhelper.AssertDeepEquals(t, expected, addresses)
+		})
+	}
+
+	t.Run("empty instance", func(t *testing.T) {
+		instance := anexiaInstance{}
+		addressCheck(t, "no addresses", &instance, map[string]v1.NodeAddressType{})
+	})
+
+	t.Run("instance with only reservedAddresses set", func(t *testing.T) {
+		instance := anexiaInstance{
+			reservedAddresses: []string{"10.0.0.2", "fda0:23::2", "8.8.8.8", "2001:db8::2"},
+		}
+
+		addressCheck(t, "expected addresses", &instance, map[string]v1.NodeAddressType{
+			"10.0.0.2":    v1.NodeInternalIP,
+			"fda0:23::2":  v1.NodeInternalIP,
+			"8.8.8.8":     v1.NodeExternalIP,
+			"2001:db8::2": v1.NodeExternalIP,
+		})
+	})
+
+	t.Run("instance with only info set", func(t *testing.T) {
+		instance := anexiaInstance{
+			info: &info.Info{
+				Network: []info.Network{
+					{
+						IPv4: []string{"10.0.0.2"},
+						IPv6: []string{"fda0:23::2"},
+					},
+					{
+						IPv4: []string{"8.8.8.8"},
+						IPv6: []string{"2001:db8::2"},
+					},
+				},
+			},
+		}
+
+		addressCheck(t, "expected addresses", &instance, map[string]v1.NodeAddressType{
+			"10.0.0.2":    v1.NodeInternalIP,
+			"fda0:23::2":  v1.NodeInternalIP,
+			"8.8.8.8":     v1.NodeExternalIP,
+			"2001:db8::2": v1.NodeExternalIP,
+		})
+	})
+
+	t.Run("instance with both reservedAddresses and info set, full overlapping set", func(t *testing.T) {
+		instance := anexiaInstance{
+			reservedAddresses: []string{"10.0.0.2", "fda0:23::2", "8.8.8.8", "2001:db8::2"},
+			info: &info.Info{
+				Network: []info.Network{
+					{
+						IPv4: []string{"10.0.0.2"},
+						IPv6: []string{"fda0:23::2"},
+					},
+					{
+						IPv4: []string{"8.8.8.8"},
+						IPv6: []string{"2001:db8::2"},
+					},
+				},
+			},
+		}
+
+		addressCheck(t, "expected addresses", &instance, map[string]v1.NodeAddressType{
+			"10.0.0.2":    v1.NodeInternalIP,
+			"fda0:23::2":  v1.NodeInternalIP,
+			"8.8.8.8":     v1.NodeExternalIP,
+			"2001:db8::2": v1.NodeExternalIP,
+		})
+	})
+
+	t.Run("instance with both reservedAddresses and info set, some overlap, each adding some", func(t *testing.T) {
+		instance := anexiaInstance{
+			reservedAddresses: []string{"10.0.0.2", "8.8.8.8", "2001:db8::2"},
+			info: &info.Info{
+				Network: []info.Network{
+					{
+						IPv4: []string{"10.0.0.2"},
+						IPv6: []string{"fda0:23::2"},
+					},
+					{
+						IPv6: []string{"2001:db8::2"},
+					},
+				},
+			},
+		}
+
+		addressCheck(t, "expected addresses", &instance, map[string]v1.NodeAddressType{
+			"10.0.0.2":    v1.NodeInternalIP,
+			"fda0:23::2":  v1.NodeInternalIP,
+			"8.8.8.8":     v1.NodeExternalIP,
+			"2001:db8::2": v1.NodeExternalIP,
+		})
+	})
+}
diff --git a/test/e2e/provisioning/all_e2e_test.go b/test/e2e/provisioning/all_e2e_test.go
index eb13c126..205d82d3 100644
--- a/test/e2e/provisioning/all_e2e_test.go
+++ b/test/e2e/provisioning/all_e2e_test.go
@@ -871,7 +871,7 @@ func getVSphereTestParams(t *testing.T) []string {
 func TestVsphereProvisioningE2E(t *testing.T) {
 	t.Parallel()
 
-	selector := Not(OsSelector("sles", "amzn2"))
+	selector := Not(OsSelector("sles", "amzn2", "rockylinux"))
 	params := getVSphereTestParams(t)
 
 	runScenarios(t, selector, params, VSPhereManifest, fmt.Sprintf("vs-%s", *testRunIdentifier))
diff --git a/test/e2e/provisioning/helper.go b/test/e2e/provisioning/helper.go
index cefad450..f8825434 100644
--- a/test/e2e/provisioning/helper.go
+++ b/test/e2e/provisioning/helper.go
@@ -57,11 +57,11 @@ var (
 	}
 
 	vSphereOSImageTemplates = map[string]string{
-		string(providerconfigtypes.OperatingSystemCentOS):     "machine-controller-e2e-centos",
-		string(providerconfigtypes.OperatingSystemFlatcar):    "machine-controller-e2e-flatcar",
-		string(providerconfigtypes.OperatingSystemRHEL):       "machine-controller-e2e-rhel",
-		string(providerconfigtypes.OperatingSystemRockyLinux): "machine-controller-e2e-rockylinux",
-		string(providerconfigtypes.OperatingSystemUbuntu):     "machine-controller-e2e-ubuntu",
+		string(providerconfigtypes.OperatingSystemCentOS):     "centos-7",
+		string(providerconfigtypes.OperatingSystemFlatcar):    "flatcar-3033.2.2",
+		string(providerconfigtypes.OperatingSystemRHEL):       "rhel-8.6",
+		string(providerconfigtypes.OperatingSystemRockyLinux): "rockylinux-8",
+		string(providerconfigtypes.OperatingSystemUbuntu):     "ubuntu-20.04",
 	}
 )
 
diff --git a/test/e2e/provisioning/testdata/machinedeployment-vsphere-datastore-cluster.yaml b/test/e2e/provisioning/testdata/machinedeployment-vsphere-datastore-cluster.yaml
index 3242f90e..743faff4 100644
--- a/test/e2e/provisioning/testdata/machinedeployment-vsphere-datastore-cluster.yaml
+++ b/test/e2e/provisioning/testdata/machinedeployment-vsphere-datastore-cluster.yaml
@@ -27,8 +27,8 @@ spec:
             templateVMName: '<< OS_Image_Template >>'
             username: '<< VSPHERE_USERNAME >>'
             vsphereURL: '<< VSPHERE_ADDRESS >>'
-            datacenter: 'dc-1'
-            folder: '/dc-1/vm/e2e-tests'
+            datacenter: 'Hamburg'
+            folder: '/Hamburg/vm/Kubermatic-dev'
             password: << VSPHERE_PASSWORD >>
             # example: 'https://your-vcenter:8443'. '/sdk' gets appended automatically
             datastoreCluster: 'dsc-1'
diff --git a/test/e2e/provisioning/testdata/machinedeployment-vsphere-resource-pool.yaml b/test/e2e/provisioning/testdata/machinedeployment-vsphere-resource-pool.yaml
index a5402136..13d8af42 100644
--- a/test/e2e/provisioning/testdata/machinedeployment-vsphere-resource-pool.yaml
+++ b/test/e2e/provisioning/testdata/machinedeployment-vsphere-resource-pool.yaml
@@ -27,8 +27,8 @@ spec:
             templateVMName: '<< OS_Image_Template >>'
             username: '<< VSPHERE_USERNAME >>'
             vsphereURL: '<< VSPHERE_ADDRESS >>'
-            datacenter: 'dc-1'
-            folder: '/dc-1/vm/e2e-tests'
+            datacenter: 'Hamburg'
+            folder: '/Hamburg/vm/Kubermatic-dev'
             password: << VSPHERE_PASSWORD >>
             datastoreCluster: 'dsc-1'
             resourcePool: 'e2e-resource-pool'
diff --git a/test/e2e/provisioning/testdata/machinedeployment-vsphere-static-ip.yaml b/test/e2e/provisioning/testdata/machinedeployment-vsphere-static-ip.yaml
index eac0bdcf..7ebc2155 100644
--- a/test/e2e/provisioning/testdata/machinedeployment-vsphere-static-ip.yaml
+++ b/test/e2e/provisioning/testdata/machinedeployment-vsphere-static-ip.yaml
@@ -27,11 +27,11 @@ spec:
             templateVMName: '<< OS_Image_Template >>'
             username: '<< VSPHERE_USERNAME >>'
             vsphereURL: '<< VSPHERE_ADDRESS >>'
-            datacenter: 'dc-1'
-            folder: '/dc-1/vm/e2e-tests'
+            datacenter: 'Hamburg'
+            folder: '/Hamburg/vm/Kubermatic-dev'
             password: << VSPHERE_PASSWORD >>
             # example: 'https://your-vcenter:8443'. '/sdk' gets appended automatically
-            datastore: HS-FreeNAS
+            datastore: alpha1
             allowInsecure: true
             cpus: 2
             MemoryMB: 2048
diff --git a/test/e2e/provisioning/testdata/machinedeployment-vsphere.yaml b/test/e2e/provisioning/testdata/machinedeployment-vsphere.yaml
index 921d0066..e14f7f4a 100644
--- a/test/e2e/provisioning/testdata/machinedeployment-vsphere.yaml
+++ b/test/e2e/provisioning/testdata/machinedeployment-vsphere.yaml
@@ -27,11 +27,11 @@ spec:
             templateVMName: '<< OS_Image_Template >>'
             username: '<< VSPHERE_USERNAME >>'
             vsphereURL: '<< VSPHERE_ADDRESS >>'
-            datacenter: 'dc-1'
-            folder: '/dc-1/vm/e2e-tests'
+            datacenter: 'Hamburg'
+            folder: '/Hamburg/vm/Kubermatic-dev'
             password: << VSPHERE_PASSWORD >>
             # example: 'https://your-vcenter:8443'. '/sdk' gets appended automatically
-            datastore: HS-FreeNAS
+            datastore: alpha1
             cpus: 2
             MemoryMB: 4096
             diskSizeGB: << DISK_SIZE >>