in internal/configprovider/userdata.go [68:107]
func parseMultipart(userDataReader *multipart.Reader) (*internalapi.NodeConfig, error) {
var nodeConfigs []*internalapi.NodeConfig
for {
part, err := userDataReader.NextPart()
if err == io.EOF {
break
}
if err != nil {
return nil, err
}
if partHeader := part.Header.Get(contentTypeHeader); len(partHeader) > 0 {
mediaType, _, err := mime.ParseMediaType(partHeader)
if err != nil {
return nil, err
}
if mediaType == nodeConfigMediaType {
nodeConfigPart, err := io.ReadAll(part)
if err != nil {
return nil, err
}
decodedConfig, err := apibridge.DecodeNodeConfig(nodeConfigPart)
if err != nil {
return nil, err
}
nodeConfigs = append(nodeConfigs, decodedConfig)
}
}
}
if len(nodeConfigs) > 0 {
config := nodeConfigs[0]
for _, nodeConfig := range nodeConfigs[1:] {
if err := config.Merge(nodeConfig); err != nil {
return nil, err
}
}
return config, nil
} else {
return nil, fmt.Errorf("Could not find NodeConfig within UserData")
}
}