Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -430,10 +430,12 @@
- [v0.2.0](services/telemetryrouter/CHANGELOG.md#v020)
- **Feature:** Added `_UNKNOWN_DEFAULT_OPEN_API` fallback value to all enums to handle unknown API values gracefully.
- [v0.2.1](services/telemetryrouter/CHANGELOG.md#v021)
- **Improvement**: Use new `WaiterHandler` struct in the DNS WaitHandler
- **Improvement**: Use new `WaiterHandler` struct in the TelemetryRouter WaitHandler
- `telemetrylink`:
- [v0.1.0](services/telemetrylink/CHANGELOG.md#v010)
- **New**: API for STACKIT Telemetry Link
- [v0.1.1](services/telemetrylink/CHANGELOG.md#v011)
- **Improvement**: Use new `WaiterHandler` struct in the TelemetryLink WaitHandler
- `vpn`:
- [v0.4.2](services/vpn/CHANGELOG.md#v042)
- **Dependencies:** Bump STACKIT SDK core module from `v0.24.0` to `v0.24.1`
Expand Down
16 changes: 16 additions & 0 deletions examples/telemetrylink/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
module github.com/stackitcloud/stackit-sdk-go/examples/telemetrylink

go 1.25

// This is not needed in production. This is only here to point the golangci linter to the local version instead of the last release on GitHub.
replace github.com/stackitcloud/stackit-sdk-go/services/telemetrylink => ../../services/telemetrylink

require (
github.com/stackitcloud/stackit-sdk-go/core v0.26.0
github.com/stackitcloud/stackit-sdk-go/services/telemetrylink v0.1.1
)

require (
github.com/golang-jwt/jwt/v5 v5.3.1 // indirect
github.com/google/uuid v1.6.0 // indirect
)
8 changes: 8 additions & 0 deletions examples/telemetrylink/go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY=
github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/stackitcloud/stackit-sdk-go/core v0.26.0 h1:jQEb9gkehfp6VCP6TcYk7BI10cz4l0KM2L6hqYBH2QA=
github.com/stackitcloud/stackit-sdk-go/core v0.26.0/go.mod h1:WU1hhxnjXw2EV7CYa1nlEvNpMiRY6CvmIOaHuL3pOaA=
299 changes: 299 additions & 0 deletions examples/telemetrylink/telemetrylink.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,299 @@
package main

import (
"context"
"log"

"github.com/stackitcloud/stackit-sdk-go/core/utils"
telemetrylink "github.com/stackitcloud/stackit-sdk-go/services/telemetrylink/v1betaapi"
"github.com/stackitcloud/stackit-sdk-go/services/telemetrylink/v1betaapi/wait"
)

func main() {
ctx := context.Background()

organizationId := "ORGANIZATION_ID" // the uuid of your STACKIT organization
folderId := "FOLDER_ID" // the uuid of your STACKIT folder
projectId := "PROJECT_ID" // the uuid of your STACKIT project
regionId := "eu01"
telemetryRouterId := "TELEMETRY_ROUTER_ID" // the uuid of your STACKIT TelemetryRouter
telemetryRouterAccessToken := "TELEMETRY_ROUTER_ACCESS_TOKEN" // the access token of your TelemetryRouter

client, err := telemetrylink.NewAPIClient()
if err != nil {
log.Fatalf("[TelemetryLink API] Creating API client: %v\n", err)
}

// --- Organization TelemetryLink Examples ---

// Create an organization TelemetryLink
log.Printf("[TelemetryLink API] Creating Organization TelemetryLink.\n")
var createdOrgLink string
createOrgLinkPayload := telemetrylink.CreateOrUpdateOrganizationTelemetryLinkPayload{
DisplayName: "my-org-telemetry-link",
TelemetryRouterId: telemetryRouterId,
AccessToken: telemetryRouterAccessToken,
}
createResp, err := client.DefaultAPI.CreateOrUpdateOrganizationTelemetryLink(ctx, organizationId, regionId).
CreateOrUpdateOrganizationTelemetryLinkPayload(createOrgLinkPayload).
Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `CreateOrUpdateOrganizationTelemetryLink`: %v\n", err)
}
createdOrgLink = createResp.Id

// Wait for the TelemetryLink to be ready
log.Printf("[TelemetryLink API] Waiting for organization TelemetryLink to be created.\n")
Comment thread
ozanichkovsky marked this conversation as resolved.
_, err = wait.CreateOrUpdateOrganizationTelemetryLinkWaitHandler(ctx, client.DefaultAPI, organizationId, regionId).WaitWithContext(context.Background())
if err != nil {
log.Fatalf("[TelemetryLink API] Error when waiting for creation: %v\n", err)
}
log.Printf("[TelemetryLink API] Organization TelemetryLink \"%s\" has been successfully created.\n", createdOrgLink)

// Get the created organization TelemetryLink Instance
log.Printf("[TelemetryLink API] Retrieving organization TelemetryLink.\n")
getResp, err := client.DefaultAPI.GetOrganizationTelemetryLink(ctx, organizationId, regionId).Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `GetOrganizationTelemetryLink`: %v\n", err)
}
log.Printf("[TelemetryLink API] Retrieved organization TelemetryLink with ID \"%s\" and Display Name \"%s\".\n", getResp.Id, getResp.DisplayName)

// Update the created organization TelemetryLink
log.Printf("[TelemetryLink API] Updating organization TelemetryLink.\n")
updatePayload := telemetrylink.CreateOrUpdateOrganizationTelemetryLinkPayload{
DisplayName: "my-upd-org-telemetry-link",
TelemetryRouterId: telemetryRouterId,
AccessToken: telemetryRouterAccessToken,
}
updateResp, err := client.DefaultAPI.CreateOrUpdateOrganizationTelemetryLink(ctx, organizationId, regionId).
CreateOrUpdateOrganizationTelemetryLinkPayload(updatePayload).
Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `CreateOrUpdateOrganizationTelemetryLink`: %v\n", err)
}

// Wait for the organization TelemetryLink to be updated
log.Printf("[TelemetryLink API] Waiting for organization TelemetryLink to be updated.\n")
Comment thread
ozanichkovsky marked this conversation as resolved.
_, err = wait.CreateOrUpdateOrganizationTelemetryLinkWaitHandler(ctx, client.DefaultAPI, organizationId, regionId).WaitWithContext(context.Background())
if err != nil {
log.Fatalf("[TelemetryLink API] Error when waiting for update: %v\n", err)
}
log.Printf("[TelemetryLink API] Organization TelemetryLink \"%s\" has been successfully updated.\n", updateResp.Id)

// Partially update organization TelemetryLink
log.Printf("[TelemetryLink API] Partially updating organization TelemetryLink.\n")
partialUpdatePayload := telemetrylink.PartialUpdateOrganizationTelemetryLinkPayload{
Description: utils.Ptr("description"),
}
partialUpdateResp, err := client.DefaultAPI.PartialUpdateOrganizationTelemetryLink(ctx, organizationId, regionId).
PartialUpdateOrganizationTelemetryLinkPayload(partialUpdatePayload).
Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `PartialUpdateOrganizationTelemetryLink`: %v\n", err)
}

// Wait for the organization TelemetryLink to be partiallyupdated
log.Printf("[TelemetryLink API] Waiting for organization TelemetryLink to be partially updated.\n")
Comment thread
ozanichkovsky marked this conversation as resolved.
_, err = wait.PartialUpdateOrganizationTelemetryLinkWaitHandler(ctx, client.DefaultAPI, organizationId, regionId).WaitWithContext(context.Background())
if err != nil {
log.Fatalf("[TelemetryLink API] Error when waiting for partial update: %v\n", err)
}
log.Printf("[TelemetryLink API] Organization TelemetryLink \"%s\" has been successfully partially updated.\n", partialUpdateResp.Id)

// Delete the organization TelemetryLink
log.Printf("[TelemetryLink API] Deleting organization TelemetryLink.\n")
err = client.DefaultAPI.DeleteOrganizationTelemetryLink(ctx, organizationId, regionId).Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `DeleteOrganizationTelemetryLink`: %v\n", err)
}

// Wait for the organization TelemetryLink to be deleted
log.Printf("[TelemetryLink API] Waiting for organization TelemetryLink to be deleted.\n")
Comment thread
ozanichkovsky marked this conversation as resolved.
_, err = wait.DeleteOrganizationTelemetryLinkWaitHandler(ctx, client.DefaultAPI, organizationId, regionId).WaitWithContext(context.Background())
if err != nil {
log.Fatalf("[TelemetryLink API] Error when waiting for deletion: %v\n", err)
}
log.Printf("[TelemetryLink API] Organization TelemetryLink \"%s\" has been successfully deleted.\n", createdOrgLink)

// --- Folder TelemetryLink Examples ---

// Create a folder TelemetryLink
log.Printf("[TelemetryLink API] Creating Folder TelemetryLink.\n")
var createdFolderLink string
createFolderLinkPayload := telemetrylink.CreateOrUpdateFolderTelemetryLinkPayload{
DisplayName: "my-folder-telemetry-link",
TelemetryRouterId: telemetryRouterId,
AccessToken: telemetryRouterAccessToken,
}
createFolderResp, err := client.DefaultAPI.CreateOrUpdateFolderTelemetryLink(ctx, folderId, regionId).
CreateOrUpdateFolderTelemetryLinkPayload(createFolderLinkPayload).
Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `CreateOrUpdateFolderTelemetryLink`: %v\n", err)
}
createdFolderLink = createFolderResp.Id

// Wait for the Folder TelemetryLink to be ready
log.Printf("[TelemetryLink API] Waiting for folder TelemetryLink to be created.\n")
Comment thread
ozanichkovsky marked this conversation as resolved.
_, err = wait.CreateOrUpdateFolderTelemetryLinkWaitHandler(ctx, client.DefaultAPI, folderId, regionId).WaitWithContext(context.Background())
if err != nil {
log.Fatalf("[TelemetryLink API] Error when waiting for creation: %v\n", err)
}
log.Printf("[TelemetryLink API] Folder TelemetryLink \"%s\" has been successfully created.\n", createdFolderLink)

// Get the created folder TelemetryLink Instance
log.Printf("[TelemetryLink API] Retrieving folder TelemetryLink.\n")
getFolderResp, err := client.DefaultAPI.GetFolderTelemetryLink(ctx, folderId, regionId).Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `GetFolderTelemetryLink`: %v\n", err)
}
log.Printf("[TelemetryLink API] Retrieved folder TelemetryLink with ID \"%s\" and Display Name \"%s\".\n", getFolderResp.Id, getFolderResp.DisplayName)

// Update the created folder TelemetryLink
log.Printf("[TelemetryLink API] Updating folder TelemetryLink.\n")
updateFolderPayload := telemetrylink.CreateOrUpdateFolderTelemetryLinkPayload{
DisplayName: "my-upd-folder-telemetry-link",
TelemetryRouterId: telemetryRouterId,
AccessToken: telemetryRouterAccessToken,
}
updateFolderResp, err := client.DefaultAPI.CreateOrUpdateFolderTelemetryLink(ctx, folderId, regionId).
CreateOrUpdateFolderTelemetryLinkPayload(updateFolderPayload).
Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `CreateOrUpdateFolderTelemetryLink`: %v\n", err)
}

// Wait for the folder TelemetryLink to be updated
log.Printf("[TelemetryLink API] Waiting for folder TelemetryLink to be updated.\n")
_, err = wait.CreateOrUpdateFolderTelemetryLinkWaitHandler(ctx, client.DefaultAPI, folderId, regionId).WaitWithContext(context.Background())
if err != nil {
log.Fatalf("[TelemetryLink API] Error when waiting for update: %v\n", err)
}
log.Printf("[TelemetryLink API] Folder TelemetryLink \"%s\" has been successfully updated.\n", updateFolderResp.Id)

// Partially update folder TelemetryLink
log.Printf("[TelemetryLink API] Partially updating folder TelemetryLink.\n")
partialUpdateFolderPayload := telemetrylink.PartialUpdateFolderTelemetryLinkPayload{
Description: utils.Ptr("folder description"),
}
partialUpdateFolderResp, err := client.DefaultAPI.PartialUpdateFolderTelemetryLink(ctx, folderId, regionId).
PartialUpdateFolderTelemetryLinkPayload(partialUpdateFolderPayload).
Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `PartialUpdateFolderTelemetryLink`: %v\n", err)
}

// Wait for the folder TelemetryLink to be partially updated
log.Printf("[TelemetryLink API] Waiting for folder TelemetryLink to be partially updated.\n")
_, err = wait.PartialUpdateFolderTelemetryLinkWaitHandler(ctx, client.DefaultAPI, folderId, regionId).WaitWithContext(context.Background())
if err != nil {
log.Fatalf("[TelemetryLink API] Error when waiting for partial update: %v\n", err)
}
log.Printf("[TelemetryLink API] Folder TelemetryLink \"%s\" has been successfully partially updated.\n", partialUpdateFolderResp.Id)

// Delete the folder TelemetryLink
log.Printf("[TelemetryLink API] Deleting folder TelemetryLink.\n")
err = client.DefaultAPI.DeleteFolderTelemetryLink(ctx, folderId, regionId).Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `DeleteFolderTelemetryLink`: %v\n", err)
}

// Wait for the folder TelemetryLink to be deleted
log.Printf("[TelemetryLink API] Waiting for folder TelemetryLink to be deleted.\n")
_, err = wait.DeleteFolderTelemetryLinkWaitHandler(ctx, client.DefaultAPI, folderId, regionId).WaitWithContext(context.Background())
if err != nil {
log.Fatalf("[TelemetryLink API] Error when waiting for deletion: %v\n", err)
}
log.Printf("[TelemetryLink API] Folder TelemetryLink \"%s\" has been successfully deleted.\n", createdFolderLink)

// --- Project TelemetryLink Examples ---

// Create a project TelemetryLink
log.Printf("[TelemetryLink API] Creating Project TelemetryLink.\n")
var createdProjectLink string
createProjectLinkPayload := telemetrylink.CreateOrUpdateProjectTelemetryLinkPayload{
DisplayName: "my-project-telemetry-link",
TelemetryRouterId: telemetryRouterId,
AccessToken: telemetryRouterAccessToken,
}
createProjectResp, err := client.DefaultAPI.CreateOrUpdateProjectTelemetryLink(ctx, projectId, regionId).
CreateOrUpdateProjectTelemetryLinkPayload(createProjectLinkPayload).
Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `CreateOrUpdateProjectTelemetryLink`: %v\n", err)
}
createdProjectLink = createProjectResp.Id

// Wait for the Project TelemetryLink to be ready
log.Printf("[TelemetryLink API] Waiting for project TelemetryLink to be created.\n")
_, err = wait.CreateOrUpdateProjectTelemetryLinkWaitHandler(ctx, client.DefaultAPI, projectId, regionId).WaitWithContext(context.Background())
if err != nil {
log.Fatalf("[TelemetryLink API] Error when waiting for creation: %v\n", err)
}
log.Printf("[TelemetryLink API] Project TelemetryLink \"%s\" has been successfully created.\n", createdProjectLink)

// Get the created project TelemetryLink Instance
log.Printf("[TelemetryLink API] Retrieving project TelemetryLink.\n")
getProjectResp, err := client.DefaultAPI.GetProjectTelemetryLink(ctx, projectId, regionId).Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `GetProjectTelemetryLink`: %v\n", err)
}
log.Printf("[TelemetryLink API] Retrieved project TelemetryLink with ID \"%s\" and Display Name \"%s\".\n", getProjectResp.Id, getProjectResp.DisplayName)

// Update the created project TelemetryLink
log.Printf("[TelemetryLink API] Updating project TelemetryLink.\n")
updateProjectPayload := telemetrylink.CreateOrUpdateProjectTelemetryLinkPayload{
DisplayName: "my-upd-project-telemetry-link",
TelemetryRouterId: telemetryRouterId,
AccessToken: telemetryRouterAccessToken,
}
updateProjectResp, err := client.DefaultAPI.CreateOrUpdateProjectTelemetryLink(ctx, projectId, regionId).
CreateOrUpdateProjectTelemetryLinkPayload(updateProjectPayload).
Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `CreateOrUpdateProjectTelemetryLink`: %v\n", err)
}

// Wait for the project TelemetryLink to be updated
log.Printf("[TelemetryLink API] Waiting for project TelemetryLink to be updated.\n")
_, err = wait.CreateOrUpdateProjectTelemetryLinkWaitHandler(ctx, client.DefaultAPI, projectId, regionId).WaitWithContext(context.Background())
if err != nil {
log.Fatalf("[TelemetryLink API] Error when waiting for update: %v\n", err)
}
log.Printf("[TelemetryLink API] Project TelemetryLink \"%s\" has been successfully updated.\n", updateProjectResp.Id)

// Partially update project TelemetryLink
log.Printf("[TelemetryLink API] Partially updating project TelemetryLink.\n")
partialUpdateProjectPayload := telemetrylink.PartialUpdateProjectTelemetryLinkPayload{
Description: utils.Ptr("project description"),
}
partialUpdateProjectResp, err := client.DefaultAPI.PartialUpdateProjectTelemetryLink(ctx, projectId, regionId).
PartialUpdateProjectTelemetryLinkPayload(partialUpdateProjectPayload).
Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `PartialUpdateProjectTelemetryLink`: %v\n", err)
}

// Wait for the project TelemetryLink to be partially updated
log.Printf("[TelemetryLink API] Waiting for project TelemetryLink to be partially updated.\n")
_, err = wait.PartialUpdateProjectTelemetryLinkWaitHandler(ctx, client.DefaultAPI, projectId, regionId).WaitWithContext(context.Background())
if err != nil {
log.Fatalf("[TelemetryLink API] Error when waiting for partial update: %v\n", err)
}
log.Printf("[TelemetryLink API] Project TelemetryLink \"%s\" has been successfully partially updated.\n", partialUpdateProjectResp.Id)

// Delete the project TelemetryLink
log.Printf("[TelemetryLink API] Deleting project TelemetryLink.\n")
err = client.DefaultAPI.DeleteProjectTelemetryLink(ctx, projectId, regionId).Execute()
if err != nil {
log.Fatalf("[TelemetryLink API] Error when calling `DeleteProjectTelemetryLink`: %v\n", err)
}

// Wait for the project TelemetryLink to be deleted
log.Printf("[TelemetryLink API] Waiting for project TelemetryLink to be deleted.\n")
_, err = wait.DeleteProjectTelemetryLinkWaitHandler(ctx, client.DefaultAPI, projectId, regionId).WaitWithContext(context.Background())
if err != nil {
log.Fatalf("[TelemetryLink API] Error when waiting for deletion: %v\n", err)
}
log.Printf("[TelemetryLink API] Project TelemetryLink \"%s\" has been successfully deleted.\n", createdProjectLink)
}
1 change: 1 addition & 0 deletions go.work
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ use (
./examples/sfs
./examples/ske
./examples/sqlserverflex
./examples/telemetrylink
./examples/telemetryrouter
./examples/waiter
./services/alb
Expand Down
3 changes: 3 additions & 0 deletions services/telemetrylink/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
## v0.1.1
- **Improvement**: Use new `WaiterHandler` struct in the TelemetryLink WaitHandler

## v0.1.0
- **New**: API for STACKIT Telemetry Link
2 changes: 1 addition & 1 deletion services/telemetrylink/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v0.1.0
v0.1.1
5 changes: 4 additions & 1 deletion services/telemetrylink/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ module github.com/stackitcloud/stackit-sdk-go/services/telemetrylink

go 1.25

require github.com/stackitcloud/stackit-sdk-go/core v0.26.0
require (
github.com/google/go-cmp v0.7.0
github.com/stackitcloud/stackit-sdk-go/core v0.26.0
)

require (
github.com/golang-jwt/jwt/v5 v5.3.1 // indirect
Expand Down
Loading
Loading