func originFromAPI(apiRec params.LogStreamRecord, controllerUUID string) (logfwd.Origin, error) { var origin logfwd.Origin tag, err := names.ParseTag(apiRec.Entity) if err != nil { return origin, errors.Annotate(err, "invalid entity") } ver, err := version.Parse(apiRec.Version) if err != nil { return origin, errors.Annotatef(err, "invalid version %q", apiRec.Version) } switch tag := tag.(type) { case names.MachineTag: origin = logfwd.OriginForMachineAgent(tag, controllerUUID, apiRec.ModelUUID, ver) case names.UnitTag: origin = logfwd.OriginForUnitAgent(tag, controllerUUID, apiRec.ModelUUID, ver) default: origin, err = logfwd.OriginForJuju(tag, controllerUUID, apiRec.ModelUUID, ver) if err != nil { return origin, errors.Annotate(err, "could not extract origin") } } return origin, nil }
func (s *OriginSuite) TestOriginForUnitAgent(c *gc.C) { tag := names.NewUnitTag("svc-a/0") origin := logfwd.OriginForUnitAgent(tag, validOrigin.ControllerUUID, validOrigin.ModelUUID, validOrigin.Software.Version) c.Check(origin, jc.DeepEquals, logfwd.Origin{ ControllerUUID: validOrigin.ControllerUUID, ModelUUID: validOrigin.ModelUUID, Hostname: "unit-svc-a-0." + validOrigin.ModelUUID, Type: logfwd.OriginTypeUnit, Name: "svc-a/0", Software: logfwd.Software{ PrivateEnterpriseNumber: 28978, Name: "jujud-unit-agent", Version: version.MustParse("2.0.1"), }, }) }