Skip to content

Commit

Permalink
Add response type to user/group policy association (#198)
Browse files Browse the repository at this point in the history
Bump up to v3

Bonus - Fix content-type in policy attach/detach API
  • Loading branch information
donatello authored Jun 14, 2023
1 parent 420204c commit 0d0990c
Show file tree
Hide file tree
Showing 30 changed files with 53 additions and 44 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ package main
import (
"fmt"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion api-error-response.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ func httpRespToErrorResponse(resp *http.Response) error {
//
// For example:
//
// import admin "github.com/minio/madmin-go/v2"
// import admin "github.com/minio/madmin-go/v3"
// ...
// ...
// ss, err := adm.ServiceStatus(...)
Expand Down
2 changes: 1 addition & 1 deletion api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ package madmin_test
import (
"testing"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func TestMinioAdminClient(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion examples/accounting-info.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"context"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/alive.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"context"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/bucket-bandwidth.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import (
"fmt"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/bucket-metadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"context"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/bucket-quota.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
"fmt"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/bucket-target.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
"fmt"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/cluster-health.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"context"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/create-job.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
"log"
"os"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/data-usage-info.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"context"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/force-unlock.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
"log"
"os"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/heal-manual.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import (
"os"
"time"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/heal-status.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
"encoding/json"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/iam-migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"context"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/kms-status.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"context"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/list-pools.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import (
"fmt"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/perf-object.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
"encoding/json"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/profiling.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import (
"os"
"time"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/replicate-diff.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
"fmt"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/server-info.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"context"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/service-account.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import (
"log"
"time"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/service-restart.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"context"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/service-trace.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
"fmt"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/storage-info.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"context"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/top-locks.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
"encoding/json"
"log"

"github.com/minio/madmin-go/v2"
"github.com/minio/madmin-go/v3"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module github.com/minio/madmin-go/v2
module github.com/minio/madmin-go/v3

go 1.17

Expand Down
4 changes: 2 additions & 2 deletions health.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ import (
"syscall"
"time"

"github.com/minio/madmin-go/v2/cgroup"
"github.com/minio/madmin-go/v2/kernel"
"github.com/minio/madmin-go/v3/cgroup"
"github.com/minio/madmin-go/v3/kernel"
"github.com/prometheus/procfs"
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/disk"
Expand Down
37 changes: 23 additions & 14 deletions policy-commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -226,53 +226,62 @@ func (adm *AdminClient) SetPolicy(ctx context.Context, policyName, entityName st
return nil
}

func (adm *AdminClient) attachOrDetachPolicyBuiltin(ctx context.Context, isAttach bool, r PolicyAssociationReq) error {
func (adm *AdminClient) attachOrDetachPolicyBuiltin(ctx context.Context, isAttach bool,
r PolicyAssociationReq,
) (PolicyAssociationResp, error) {
err := r.IsValid()
if err != nil {
return err
return PolicyAssociationResp{}, err
}

plainBytes, err := json.Marshal(r)
if err != nil {
return err
return PolicyAssociationResp{}, err
}

encBytes, err := EncryptData(adm.getSecretKey(), plainBytes)
if err != nil {
return err
return PolicyAssociationResp{}, err
}

suffix := "detach"
if isAttach {
suffix = "attach"
}

h := make(http.Header, 1)
h.Add("Content-Type", "application/octet-stream")
reqData := requestData{
relPath: adminAPIPrefix + "/idp/builtin/policy/" + suffix,
content: encBytes,
customHeaders: h,
relPath: adminAPIPrefix + "/idp/builtin/policy/" + suffix,
content: encBytes,
}

resp, err := adm.executeMethod(ctx, http.MethodPost, reqData)
defer closeResponse(resp)
if err != nil {
return err
return PolicyAssociationResp{}, err
}
if resp.StatusCode != http.StatusOK {
return PolicyAssociationResp{}, httpRespToErrorResponse(resp)
}

if (isAttach && resp.StatusCode != http.StatusCreated) ||
(!isAttach && resp.StatusCode != http.StatusNoContent) {
return httpRespToErrorResponse(resp)
content, err := DecryptData(adm.getSecretKey(), resp.Body)
if err != nil {
return PolicyAssociationResp{}, err
}

return nil
rsp := PolicyAssociationResp{}
err = json.Unmarshal(content, &rsp)
return rsp, err
}

// AttachPolicy - attach policies to a user or group.
func (adm *AdminClient) AttachPolicy(ctx context.Context, r PolicyAssociationReq) error {
func (adm *AdminClient) AttachPolicy(ctx context.Context, r PolicyAssociationReq) (PolicyAssociationResp, error) {
return adm.attachOrDetachPolicyBuiltin(ctx, true, r)
}

// DetachPolicy - detach policies from a user or group.
func (adm *AdminClient) DetachPolicy(ctx context.Context, r PolicyAssociationReq) error {
func (adm *AdminClient) DetachPolicy(ctx context.Context, r PolicyAssociationReq) (PolicyAssociationResp, error) {
return adm.attachOrDetachPolicyBuiltin(ctx, false, r)
}

Expand Down

0 comments on commit 0d0990c

Please sign in to comment.