MCPcopy Create free account
hub / github.com/bytebase/bytebase / getInstanceRoles

Method getInstanceRoles

backend/plugin/db/elasticsearch/role.go:18–57  ·  view source on GitHub ↗

getInstanceRoles fetches users/roles for display purposes only. Fails open on any error since most deployments don't use internal users.

(ctx context.Context)

Source from the content-addressed store, hash-verified

16// getInstanceRoles fetches users/roles for display purposes only.
17// Fails open on any error since most deployments don't use internal users.
18func (d *Driver) getInstanceRoles(ctx context.Context) ([]*storepb.InstanceRole, error) {
19 var resp *http.Response
20 var err error
21
22 if d.isOpenSearch && d.opensearchClient != nil {
23 resp, err = d.basicAuthClient.Do("GET", []byte("/_plugins/_security/api/internalusers"), nil)
24 } else if d.typedClient != nil {
25 var esResp *esapi.Response
26 esResp, err = esapi.SecurityGetUserRequest{}.Do(ctx, d.typedClient)
27 if esResp != nil {
28 resp = &http.Response{StatusCode: esResp.StatusCode, Body: esResp.Body}
29 }
30 } else if d.basicAuthClient != nil {
31 resp, err = d.basicAuthClient.Do("GET", []byte("/_security/user"), nil)
32 }
33
34 if err != nil || resp == nil || resp.StatusCode != http.StatusOK {
35 return nil, nil
36 }
37 defer resp.Body.Close()
38
39 bytes, err := io.ReadAll(resp.Body)
40 if err != nil {
41 return nil, nil
42 }
43
44 results := map[string]struct {
45 Roles []string `json:"roles"`
46 }{}
47 if err := json.Unmarshal(bytes, &results); err != nil {
48 return nil, nil
49 }
50
51 var roles []*storepb.InstanceRole
52 for name, user := range results {
53 attr := fmt.Sprintf("[%s]", strings.Join(user.Roles, ", "))
54 roles = append(roles, &storepb.InstanceRole{Name: name, Attribute: &attr})
55 }
56 return roles, nil
57}

Callers 1

SyncInstanceMethod · 0.95

Implementers 15

MockDriverbackend/plugin/advisor/utils_for_tests
Driverbackend/plugin/db/bigquery/bigquery.go
Driverbackend/plugin/db/mongodb/mongodb.go
Driverbackend/plugin/db/trino/trino.go
Driverbackend/plugin/db/redshift/redshift.go
Driverbackend/plugin/db/oracle/oracle.go
Driverbackend/plugin/db/dynamodb/dynamodb.go
Driverbackend/plugin/db/cosmosdb/cosmosdb.go
Driverbackend/plugin/db/spanner/spanner.go
Driverbackend/plugin/db/mssql/mssql.go
Driverbackend/plugin/db/mysql/mysql.go
Driverbackend/plugin/db/pg/pg.go

Calls 4

DoMethod · 0.80
UnmarshalMethod · 0.80
JoinMethod · 0.80
CloseMethod · 0.65

Tested by

no test coverage detected