func()

in tools/eksDistroBuildToolingOpsTools/pkg/metrics/publisher.go [22:41]


func (m *MetricPublisher) PublishMetric(metric *cloudwatch.PutMetricDataInput) (*cloudwatch.PutMetricDataOutput, error) {
	outputData, err := m.cloudwatchClient.PutMetricData(metric)
	logger.V(9).Info("put metric data", "inputData", metric.MetricData, "outputData", outputData)
	if err != nil {
		if awsErr, ok := err.(awserr.Error); ok {
			switch awsErr.Code() {
			case cloudwatch.ErrCodeInvalidParameterValueException:
				return nil, fmt.Errorf("invalid parameter value: %v code: %v", awsErr.Message(), awsErr.Code())
			case cloudwatch.ErrCodeMissingRequiredParameterException:
				return nil, fmt.Errorf("required parameter missing: %v code: %v", awsErr.Message(), awsErr.Code())
			case cloudwatch.ErrCodeInvalidParameterCombinationException:
				return nil, fmt.Errorf("invalid parameter combination: %v code: %v", awsErr.Message(), awsErr.Code())
			case cloudwatch.ErrCodeInternalServiceFault :
				return nil, fmt.Errorf("cloudwatch internal service fault: %v code: %v", awsErr.Message(), awsErr.Code())
			}
		}
		return nil, fmt.Errorf("putting metric data %v: %v", metric.MetricData, err)
	}
	return outputData, nil
}