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

Role Assignments: Use OpenAPI client #1189

Merged
merged 4 commits into from
Dec 3, 2023
Merged
Show file tree
Hide file tree
Changes from 3 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
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ require (
github.com/go-openapi/strfmt v0.21.7
github.com/grafana/amixr-api-go-client v0.0.11
github.com/grafana/grafana-api-golang-client v0.26.0
github.com/grafana/grafana-openapi-client-go v0.0.0-20231127132426-27eaf0090f74
github.com/grafana/grafana-openapi-client-go v0.0.0-20231129154433-006c3acf5e73
github.com/grafana/machine-learning-go-client v0.5.0
github.com/grafana/synthetic-monitoring-agent v0.19.1
github.com/grafana/synthetic-monitoring-api-go-client v0.7.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@ github.com/grafana/amixr-api-go-client v0.0.11 h1:jlE+5t0tRuCtjbpM81j70Dr2J4eCyS
github.com/grafana/amixr-api-go-client v0.0.11/go.mod h1:N6x26XUrM5zGtK5zL5vNJnAn2JFMxLFPPLTw/6pDkFE=
github.com/grafana/grafana-api-golang-client v0.26.0 h1:Eu2YsfUezYngy8ifvmLybgluIcn/2IS9u1xkzuYstEM=
github.com/grafana/grafana-api-golang-client v0.26.0/go.mod h1:uNLZEmgKtTjHBtCQMwNn3qsx2mpMb8zU+7T4Xv3NR9Y=
github.com/grafana/grafana-openapi-client-go v0.0.0-20231127132426-27eaf0090f74 h1:2o+ZlooKiPAP5iNN19qPak99SbjROLDVf7uArCi3N4I=
github.com/grafana/grafana-openapi-client-go v0.0.0-20231127132426-27eaf0090f74/go.mod h1:nPuLRjbjyil4xL658KpMAjKodgI0pUt/OdaCJ11lJQM=
github.com/grafana/grafana-openapi-client-go v0.0.0-20231129154433-006c3acf5e73 h1:OjE71HRSldBF/6GypUB/6rS3ENHYnxYdKE4PpQ+aCug=
github.com/grafana/grafana-openapi-client-go v0.0.0-20231129154433-006c3acf5e73/go.mod h1:nPuLRjbjyil4xL658KpMAjKodgI0pUt/OdaCJ11lJQM=
github.com/grafana/machine-learning-go-client v0.5.0 h1:Q1K+MPSy8vfMm2jsk3WQ7O77cGr2fM5hxwtPSoPc5NU=
github.com/grafana/machine-learning-go-client v0.5.0/go.mod h1:QFfZz8NkqVF8++skjkKQXJEZfpCYd8S0yTWJUpsLLTA=
github.com/grafana/synthetic-monitoring-agent v0.19.1 h1:ImH6JG8ZJ1h+KP7lJV6nkYyImAXtEthMaoLRpP4Hd0M=
Expand Down
40 changes: 10 additions & 30 deletions internal/resources/grafana/common_check_exists_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,6 @@ import (
"strconv"

goapi "github.com/grafana/grafana-openapi-client-go/client"
"github.com/grafana/grafana-openapi-client-go/client/access_control"
"github.com/grafana/grafana-openapi-client-go/client/annotations"
"github.com/grafana/grafana-openapi-client-go/client/datasources"
"github.com/grafana/grafana-openapi-client-go/client/folders"
"github.com/grafana/grafana-openapi-client-go/client/library_elements"
"github.com/grafana/grafana-openapi-client-go/client/orgs"
"github.com/grafana/grafana-openapi-client-go/client/playlists"
"github.com/grafana/grafana-openapi-client-go/client/service_accounts"
"github.com/grafana/grafana-openapi-client-go/client/teams"
"github.com/grafana/grafana-openapi-client-go/client/users"
"github.com/grafana/grafana-openapi-client-go/models"
"github.com/grafana/terraform-provider-grafana/internal/common"
"github.com/grafana/terraform-provider-grafana/internal/resources/grafana"
Expand All @@ -29,40 +19,35 @@ var (
annotationsCheckExists = newCheckExistsHelper(
func(a *models.Annotation) string { return strconv.FormatInt(a.ID, 10) },
func(client *goapi.GrafanaHTTPAPI, id string) (*models.Annotation, error) {
params := annotations.NewGetAnnotationByIDParams().WithAnnotationID(id)
resp, err := client.Annotations.GetAnnotationByID(params, nil)
resp, err := client.Annotations.GetAnnotationByID(id)
return payloadOrError(resp, err)
},
)
datasourceCheckExists = newCheckExistsHelper(
func(d *models.DataSource) string { return strconv.FormatInt(d.ID, 10) },
func(client *goapi.GrafanaHTTPAPI, id string) (*models.DataSource, error) {
params := datasources.NewGetDataSourceByIDParams().WithID(id)
resp, err := client.Datasources.GetDataSourceByID(params, nil)
resp, err := client.Datasources.GetDataSourceByID(id)
return payloadOrError(resp, err)
},
)
folderCheckExists = newCheckExistsHelper(
func(f *models.Folder) string { return strconv.FormatInt(f.ID, 10) },
func(client *goapi.GrafanaHTTPAPI, id string) (*models.Folder, error) {
params := folders.NewGetFolderByIDParams().WithFolderID(mustParseInt64(id))
resp, err := client.Folders.GetFolderByID(params, nil)
resp, err := client.Folders.GetFolderByID(mustParseInt64(id))
return payloadOrError(resp, err)
},
)
libraryPanelCheckExists = newCheckExistsHelper(
func(t *models.LibraryElementResponse) string { return t.Result.UID },
func(client *goapi.GrafanaHTTPAPI, id string) (*models.LibraryElementResponse, error) {
params := library_elements.NewGetLibraryElementByUIDParams().WithLibraryElementUID(id)
resp, err := client.LibraryElements.GetLibraryElementByUID(params, nil)
resp, err := client.LibraryElements.GetLibraryElementByUID(id)
return payloadOrError(resp, err)
},
)
orgCheckExists = newCheckExistsHelper(
func(o *models.OrgDetailsDTO) string { return strconv.FormatInt(o.ID, 10) },
func(client *goapi.GrafanaHTTPAPI, id string) (*models.OrgDetailsDTO, error) {
params := orgs.NewGetOrgByIDParams().WithOrgID(mustParseInt64(id))
resp, err := client.Orgs.GetOrgByID(params, nil)
resp, err := client.Orgs.GetOrgByID(mustParseInt64(id))
return payloadOrError(resp, err)
},
)
Expand All @@ -74,40 +59,35 @@ var (
return p.UID
},
func(client *goapi.GrafanaHTTPAPI, id string) (*models.Playlist, error) {
params := playlists.NewGetPlaylistParams().WithUID(id)
resp, err := client.Playlists.GetPlaylist(params, nil)
resp, err := client.Playlists.GetPlaylist(id)
return payloadOrError(resp, err)
},
)
roleCheckExists = newCheckExistsHelper(
func(r *models.RoleDTO) string { return r.UID },
func(client *goapi.GrafanaHTTPAPI, id string) (*models.RoleDTO, error) {
params := access_control.NewGetRoleParams().WithRoleUID(id)
resp, err := client.AccessControl.GetRole(params, nil)
resp, err := client.AccessControl.GetRole(id)
return payloadOrError(resp, err)
},
)
serviceAccountCheckExists = newCheckExistsHelper(
func(t *models.ServiceAccountDTO) string { return strconv.FormatInt(t.ID, 10) },
func(client *goapi.GrafanaHTTPAPI, id string) (*models.ServiceAccountDTO, error) {
params := service_accounts.NewRetrieveServiceAccountParams().WithServiceAccountID(mustParseInt64(id))
resp, err := client.ServiceAccounts.RetrieveServiceAccount(params, nil)
resp, err := client.ServiceAccounts.RetrieveServiceAccount(mustParseInt64(id))
return payloadOrError(resp, err)
},
)
teamCheckExists = newCheckExistsHelper(
func(t *models.TeamDTO) string { return strconv.FormatInt(t.ID, 10) },
func(client *goapi.GrafanaHTTPAPI, id string) (*models.TeamDTO, error) {
params := teams.NewGetTeamByIDParams().WithTeamID(id)
resp, err := client.Teams.GetTeamByID(params, nil)
resp, err := client.Teams.GetTeamByID(id)
return payloadOrError(resp, err)
},
)
userCheckExists = newCheckExistsHelper(
func(u *models.UserProfileDTO) string { return strconv.FormatInt(u.ID, 10) },
func(client *goapi.GrafanaHTTPAPI, id string) (*models.UserProfileDTO, error) {
params := users.NewGetUserByIDParams().WithUserID(mustParseInt64(id))
resp, err := client.Users.GetUserByID(params, nil)
resp, err := client.Users.GetUserByID(mustParseInt64(id))
return payloadOrError(resp, err)
},
)
Expand Down
6 changes: 2 additions & 4 deletions internal/resources/grafana/data_source_dashboard.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"encoding/json"
"fmt"

"github.com/grafana/grafana-openapi-client-go/client/dashboards"
"github.com/grafana/grafana-openapi-client-go/client/search"
"github.com/grafana/terraform-provider-grafana/internal/common"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
Expand Down Expand Up @@ -89,7 +88,7 @@ func dataSourceDashboardRead(ctx context.Context, d *schema.ResourceData, meta i

searchType := "dash-db"
params := search.NewSearchParams().WithType(&searchType).WithDashboardIds([]int64{int64(id)})
resp, err := client.Search.Search(params, nil)
resp, err := client.Search.Search(params)
if err != nil {
return diag.FromErr(err)
}
Expand All @@ -104,8 +103,7 @@ func dataSourceDashboardRead(ctx context.Context, d *schema.ResourceData, meta i
}
}

params := dashboards.NewGetDashboardByUIDParams().WithUID(uid)
resp, err := client.Dashboards.GetDashboardByUID(params, nil)
resp, err := client.Dashboards.GetDashboardByUID(uid)
if err != nil {
return diag.FromErr(err)
}
Expand Down
2 changes: 1 addition & 1 deletion internal/resources/grafana/data_source_dashboards.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ func dataSourceReadDashboards(ctx context.Context, d *schema.ResourceData, meta

d.SetId(MakeOrgResourceID(orgID, id))

resp, err := client.Search.Search(params, nil)
resp, err := client.Search.Search(params)
if err != nil {
return diag.FromErr(err)
}
Expand Down
10 changes: 3 additions & 7 deletions internal/resources/grafana/data_source_data_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package grafana
import (
"context"

"github.com/grafana/grafana-openapi-client-go/client/datasources"
"github.com/grafana/grafana-openapi-client-go/models"
"github.com/grafana/terraform-provider-grafana/internal/common"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
Expand Down Expand Up @@ -47,15 +46,12 @@ func datasourceDatasourceRead(ctx context.Context, d *schema.ResourceData, meta
var err error

if name, ok := d.GetOk("name"); ok {
params := datasources.NewGetDataSourceByNameParams().WithName(name.(string))
resp, err = client.Datasources.GetDataSourceByName(params, nil)
resp, err = client.Datasources.GetDataSourceByName(name.(string))
} else if id, ok := d.GetOk("id"); ok {
_, idStr := SplitOrgResourceID(id.(string))
params := datasources.NewGetDataSourceByIDParams().WithID(idStr)
resp, err = client.Datasources.GetDataSourceByID(params, nil)
resp, err = client.Datasources.GetDataSourceByID(idStr)
} else if uid, ok := d.GetOk("uid"); ok {
params := datasources.NewGetDataSourceByUIDParams().WithUID(uid.(string))
resp, err = client.Datasources.GetDataSourceByUID(params, nil)
resp, err = client.Datasources.GetDataSourceByUID(uid.(string))
}

if err != nil {
Expand Down
5 changes: 2 additions & 3 deletions internal/resources/grafana/data_source_folder.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func findFolderWithTitle(client *goapi.GrafanaHTTPAPI, title string) (*models.Fo

for {
params := folders.NewGetFoldersParams().WithPage(&page)
resp, err := client.Folders.GetFolders(params, nil)
resp, err := client.Folders.GetFolders(params)
if err != nil {
return nil, err
}
Expand All @@ -62,8 +62,7 @@ func findFolderWithTitle(client *goapi.GrafanaHTTPAPI, title string) (*models.Fo

for _, folder := range resp.Payload {
if folder.Title == title {
getParams := folders.NewGetFolderByUIDParams().WithFolderUID(folder.UID)
resp, err := client.Folders.GetFolderByUID(getParams, nil)
resp, err := client.Folders.GetFolderByUID(folder.UID)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion internal/resources/grafana/data_source_folders.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func readFolders(ctx context.Context, d *schema.ResourceData, meta interface{})
searchType := "dash-folder"
for {
params := search.NewSearchParams().WithType(&searchType).WithPage(&page)
resp, err := client.Search.Search(params, nil)
resp, err := client.Search.Search(params)
if err != nil {
return diag.FromErr(err)
}
Expand Down
4 changes: 1 addition & 3 deletions internal/resources/grafana/data_source_library_panel.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package grafana
import (
"context"

"github.com/grafana/grafana-openapi-client-go/client/library_elements"
"github.com/grafana/terraform-provider-grafana/internal/common"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
Expand Down Expand Up @@ -41,8 +40,7 @@ func dataSourceLibraryPanelRead(ctx context.Context, d *schema.ResourceData, met
return diag.Errorf("either name or uid must be specified")
}

params := library_elements.NewGetLibraryElementByNameParams().WithLibraryElementName(name)
resp, err := client.LibraryElements.GetLibraryElementByName(params, nil)
resp, err := client.LibraryElements.GetLibraryElementByName(name)
if err != nil {
return diag.FromErr(err)
}
Expand Down
7 changes: 2 additions & 5 deletions internal/resources/grafana/data_source_organization.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"strconv"
"strings"

"github.com/grafana/grafana-openapi-client-go/client/orgs"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
Expand Down Expand Up @@ -56,8 +55,7 @@ func dataSourceOrganizationRead(ctx context.Context, d *schema.ResourceData, met
client := OAPIGlobalClient(meta)
name := d.Get("name").(string)

params := orgs.NewGetOrgByNameParams().WithOrgName(name)
org, err := client.Orgs.GetOrgByName(params, nil)
org, err := client.Orgs.GetOrgByName(name)

if err != nil {
if strings.HasPrefix(err.Error(), "status: 404") {
Expand All @@ -66,8 +64,7 @@ func dataSourceOrganizationRead(ctx context.Context, d *schema.ResourceData, met
return diag.FromErr(err)
}

orgUsersParams := orgs.NewGetOrgUsersParams().WithOrgID(org.Payload.ID)
orgUsers, err := client.Orgs.GetOrgUsers(orgUsersParams, nil)
orgUsers, err := client.Orgs.GetOrgUsers(org.Payload.ID)
if err != nil {
return diag.FromErr(err)
}
Expand Down
2 changes: 1 addition & 1 deletion internal/resources/grafana/data_source_team.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func dataSourceTeamRead(ctx context.Context, d *schema.ResourceData, meta interf
name := d.Get("name").(string)

params := teams.NewSearchTeamsParams().WithName(&name)
resp, err := client.Teams.SearchTeams(params, nil)
resp, err := client.Teams.SearchTeams(params)
if err != nil {
return diag.FromErr(err)
}
Expand Down
7 changes: 2 additions & 5 deletions internal/resources/grafana/data_source_user.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"
"fmt"

"github.com/grafana/grafana-openapi-client-go/client/users"
"github.com/grafana/grafana-openapi-client-go/models"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
Expand Down Expand Up @@ -65,11 +64,9 @@ func dataSourceUserRead(ctx context.Context, d *schema.ResourceData, meta interf
}

if id := d.Get("user_id").(int); id >= 0 {
params := users.NewGetUserByIDParams().WithUserID(int64(id))
resp, err = client.Users.GetUserByID(params, nil)
resp, err = client.Users.GetUserByID(int64(id))
} else if emailOrLogin != "" {
params := users.NewGetUserByLoginOrEmailParams().WithLoginOrEmail(emailOrLogin)
resp, err = client.Users.GetUserByLoginOrEmail(params, nil)
resp, err = client.Users.GetUserByLoginOrEmail(emailOrLogin)
} else {
err = fmt.Errorf("must specify one of user_id, email, or login")
}
Expand Down
14 changes: 4 additions & 10 deletions internal/resources/grafana/resource_annotation.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"strconv"
"time"

"github.com/grafana/grafana-openapi-client-go/client/annotations"
"github.com/grafana/grafana-openapi-client-go/models"
"github.com/grafana/terraform-provider-grafana/internal/common"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
Expand Down Expand Up @@ -105,8 +104,7 @@ func CreateAnnotation(ctx context.Context, d *schema.ResourceData, meta interfac
return diag.FromErr(err)
}

params := annotations.NewPostAnnotationParams().WithBody(annotation)
resp, err := client.Annotations.PostAnnotation(params, nil)
resp, err := client.Annotations.PostAnnotation(annotation)
if err != nil {
return diag.FromErr(err)
}
Expand All @@ -131,17 +129,14 @@ func UpdateAnnotation(ctx context.Context, d *schema.ResourceData, meta interfac
TimeEnd: postAnnotation.TimeEnd,
}

params := annotations.NewUpdateAnnotationParams().WithAnnotationID(idStr).WithBody(&annotation)

_, err = client.Annotations.UpdateAnnotation(params, nil)
_, err = client.Annotations.UpdateAnnotation(idStr, &annotation)
return diag.FromErr(err)
}

func ReadAnnotation(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client, orgID, idStr := OAPIClientFromExistingOrgResource(meta, d.Id())

params := annotations.NewGetAnnotationByIDParams().WithAnnotationID(idStr)
resp, err := client.Annotations.GetAnnotationByID(params, nil)
resp, err := client.Annotations.GetAnnotationByID(idStr)
if err, shouldReturn := common.CheckReadError("Annotation", d, err); shouldReturn {
return err
}
Expand All @@ -165,8 +160,7 @@ func ReadAnnotation(ctx context.Context, d *schema.ResourceData, meta interface{
func DeleteAnnotation(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client, _, idStr := OAPIClientFromExistingOrgResource(meta, d.Id())

params := annotations.NewDeleteAnnotationByIDParams().WithAnnotationID(idStr)
_, err := client.Annotations.DeleteAnnotationByID(params, nil)
_, err := client.Annotations.DeleteAnnotationByID(idStr)
diag, _ := common.CheckReadError("annotation", d, err)
return diag
}
Expand Down
13 changes: 4 additions & 9 deletions internal/resources/grafana/resource_dashboard_permission.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"

goapi "github.com/grafana/grafana-openapi-client-go/client"
"github.com/grafana/grafana-openapi-client-go/client/dashboard_permissions"
"github.com/grafana/grafana-openapi-client-go/models"
"github.com/grafana/terraform-provider-grafana/internal/common"
)
Expand Down Expand Up @@ -152,11 +151,9 @@ func ReadDashboardPermissions(ctx context.Context, d *schema.ResourceData, meta

if idInt, _ := strconv.ParseInt(idStr, 10, 64); idInt == 0 {
// id is not an int, so it must be a uid
params := dashboard_permissions.NewGetDashboardPermissionsListByUIDParams().WithUID(idStr)
resp, err = client.DashboardPermissions.GetDashboardPermissionsListByUID(params, nil)
resp, err = client.DashboardPermissions.GetDashboardPermissionsListByUID(idStr)
} else {
params := dashboard_permissions.NewGetDashboardPermissionsListByIDParams().WithDashboardID(idInt)
resp, err = client.DashboardPermissions.GetDashboardPermissionsListByID(params, nil)
resp, err = client.DashboardPermissions.GetDashboardPermissionsListByID(idInt)
}
if err, shouldReturn := common.CheckReadError("dashboard permissions", d, err); shouldReturn {
return err
Expand Down Expand Up @@ -199,11 +196,9 @@ func updateDashboardPermissions(client *goapi.GrafanaHTTPAPI, id string, permiss
var err error
if idInt, _ := strconv.ParseInt(id, 10, 64); idInt == 0 {
// id is not an int, so it must be a uid
params := dashboard_permissions.NewUpdateDashboardPermissionsByUIDParams().WithUID(id).WithBody(permissions)
_, err = client.DashboardPermissions.UpdateDashboardPermissionsByUID(params, nil)
_, err = client.DashboardPermissions.UpdateDashboardPermissionsByUID(id, permissions)
} else {
params := dashboard_permissions.NewUpdateDashboardPermissionsByIDParams().WithDashboardID(idInt).WithBody(permissions)
_, err = client.DashboardPermissions.UpdateDashboardPermissionsByID(params, nil)
_, err = client.DashboardPermissions.UpdateDashboardPermissionsByID(idInt, permissions)
}
return err
}
Loading