-
Notifications
You must be signed in to change notification settings - Fork 124
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
PMM-13315 Move SanitizeSAName to global utils.
- Loading branch information
1 parent
b14fef8
commit c646f67
Showing
6 changed files
with
58 additions
and
49 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package grafana | ||
|
||
import ( | ||
"crypto/md5" | ||
"fmt" | ||
) | ||
|
||
// SanitizeSAName is used for sanitize name and it's length for service accounts. | ||
// Max length of service account name is 190 chars (limit in Grafana Postgres DB). | ||
// However, prefix added by grafana is counted too. Prefix is sa-{orgID}-. | ||
// Bare minimum is 5 chars reserved (orgID is <10, like sa-1-) and could be more depends | ||
// on orgID number. Let's reserve 10 chars. It will cover almost one million orgIDs. | ||
// Sanitizing, ensure its length by hashing postfix when length is exceeded. | ||
// MD5 is used because it has fixed length 32 chars. | ||
func SanitizeSAName(name string) string { | ||
if len(name) <= 180 { | ||
return name | ||
} | ||
|
||
return fmt.Sprintf("%s%x", name[:148], md5.Sum([]byte(name[148:]))) //nolint:gosec | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package grafana | ||
|
||
import ( | ||
"fmt" | ||
"testing" | ||
|
||
"github.com/stretchr/testify/require" | ||
|
||
stringsgen "github.com/percona/pmm/utils/strings" | ||
) | ||
|
||
func Test_sanitizeSAName(t *testing.T) { | ||
// max possible length without hashing | ||
len180, err := stringsgen.GenerateRandomString(180) | ||
require.NoError(t, err) | ||
require.Equal(t, len180, SanitizeSAName(len180)) | ||
|
||
// too long length - postfix hashed | ||
len200, err := stringsgen.GenerateRandomString(200) | ||
require.NoError(t, err) | ||
len200sanitized := SanitizeSAName(len200) | ||
require.Equal(t, fmt.Sprintf("%s%s", len200[:148], len200sanitized[148:]), len200sanitized) | ||
} |
File renamed without changes.