[MM-59292] Add metadata to Support Packet (#27573)

Этот коммит содержится в:
Ben Schumacher
2024-07-14 20:26:43 +02:00
коммит произвёл GitHub
родитель a4bdb65037
Коммит ff3ed78124
4 изменённых файлов: 50 добавлений и 7 удалений

Просмотреть файл

@@ -41,6 +41,7 @@ func (a *App) GenerateSupportPacket(c request.CTX, options *model.SupportPacketO
"cpu profile": a.createCPUProfile,
"heap profile": a.createHeapProfile,
"goroutines": a.createGoroutineProfile,
"metadata": a.createSupportPacketMetadata,
}
if options.IncludeLogs {
@@ -412,3 +413,21 @@ func (a *App) createGoroutineProfile(_ request.CTX) (*model.FileData, error) {
}
return fileData, nil
}
func (a *App) createSupportPacketMetadata(_ request.CTX) (*model.FileData, error) {
metadata, err := model.GeneratePacketMetadata(model.SupportPacketType, a.TelemetryId(), a.License(), nil)
if err != nil {
return nil, errors.Wrap(err, "failed to generate packet metadata")
}
b, err := yaml.Marshal(metadata)
if err != nil {
return nil, errors.Wrap(err, "failed to marshal packet metadata into yaml")
}
fileData := &model.FileData{
Filename: model.PacketMetadataFileName,
Body: b,
}
return fileData, nil
}

Просмотреть файл

@@ -214,6 +214,7 @@ func TestGenerateSupportPacket(t *testing.T) {
var rFileNames []string
testFiles := []string{
"support_packet.yaml",
"metadata.yaml",
"plugins.json",
"sanitized_config.json",
"mattermost.log",
@@ -238,6 +239,7 @@ func TestGenerateSupportPacket(t *testing.T) {
testFiles := []string{
"support_packet.yaml",
"metadata.yaml",
"plugins.json",
"sanitized_config.json",
"cpu.prof",
@@ -267,6 +269,7 @@ func TestGenerateSupportPacket(t *testing.T) {
})
testFiles := []string{
"support_packet.yaml",
"metadata.yaml",
"plugins.json",
"sanitized_config.json",
"cpu.prof",
@@ -424,3 +427,24 @@ func TestCreateSanitizedConfigFile(t *testing.T) {
assert.Positive(t, len(fileData.Body))
assert.NoError(t, err)
}
func TestCreateSupportPacketMetadata(t *testing.T) {
th := Setup(t)
defer th.TearDown()
t.Run("Happy path", func(t *testing.T) {
fileData, err := th.App.createSupportPacketMetadata(th.Context)
require.NoError(t, err)
require.NotNil(t, fileData)
assert.Equal(t, "metadata.yaml", fileData.Filename)
assert.Positive(t, len(fileData.Body))
metadate, err := model.ParsePacketMetadata(fileData.Body)
assert.NoError(t, err)
require.NotNil(t, metadate)
assert.Equal(t, model.SupportPacketType, metadate.Type)
assert.Equal(t, model.CurrentVersion, metadate.ServerVersion)
assert.NotEmpty(t, metadate.ServerID)
assert.NotEmpty(t, metadate.GeneratedAt)
})
}

Просмотреть файл

@@ -103,18 +103,18 @@ func ParsePacketMetadata(b []byte) (*PacketMetadata, error) {
}
// GeneratePacketMetadata is a utility function to generate metadata for customer provided Packets.
// It will construct it from serverID and optionally a license.
func GeneratePacketMetadata(serverID string, license *License, extra map[string]any) (*PacketMetadata, error) {
// It will construct it from a Packet Type, the telemetryID and optionally a license.
func GeneratePacketMetadata(t PacketType, telemetryID string, license *License, extra map[string]any) (*PacketMetadata, error) {
if extra == nil {
extra = make(map[string]any)
}
md := PacketMetadata{
md := &PacketMetadata{
Version: CurrentMetadataVersion,
Type: PluginPacketType,
Type: t,
GeneratedAt: GetMillis(),
ServerVersion: CurrentVersion,
ServerID: serverID,
ServerID: telemetryID,
Extras: extra,
}
@@ -127,5 +127,5 @@ func GeneratePacketMetadata(serverID string, license *License, extra map[string]
return nil, fmt.Errorf("invalid metadata: %w", err)
}
return &md, nil
return md, nil
}

Просмотреть файл

@@ -162,7 +162,7 @@ func (s *SystemService) GeneratePacketMetadata(path string, pluginMeta map[strin
pluginMeta["plugin_id"] = manifest.Id
pluginMeta["plugin_version"] = manifest.Version
md, err := model.GeneratePacketMetadata(serverID, license, pluginMeta)
md, err := model.GeneratePacketMetadata(model.PluginPacketType, serverID, license, pluginMeta)
if err != nil {
return "", errors.Wrap(err, "failed to get packet metadata")
}