I always liked you, Tim :) On Tue, Feb 2, 2016, 10:25 PM Tim Penhey <[email protected]> wrote:
> Here is my short answer: > > use names.UnitTag > > That is all. > > Tim > > On 23/01/16 09:53, Nate Finch wrote: > > Working in the model layer on the server between the API and the DB. > > Specifically in my instance, an API call comes in from a unit, > > requesting the bytes for a resource. We want to record that this unit > > is now using the bytes from that specific revision of the resource. I > > have a pointer to a state.Unit, and a function that takes a Resource > > metadata object and some reference to the unit, and does the actual > > transaction to the DB to store the unit's ID and the resource > information. > > > > On Fri, Jan 22, 2016 at 3:34 PM William Reade > > <[email protected] <mailto:[email protected]>> > wrote: > > > > Need a bit more context here. What layer are you working in? > > > > In general terms, entity references in the API *must* use tags; > > entity references that leak out to users *must not* use tags; > > otherwise it's a matter of judgment and convenience. In state code, > > it's annoying to use tags because we've already got the globalKey > > convention; in worker code it's often justifiable if not exactly > > awesome. > > See https://github.com/juju/juju/wiki/Managing-complexity#workers > > > > Cheers > > William > > > > On Fri, Jan 22, 2016 at 6:02 PM, Nate Finch > > <[email protected] <mailto:[email protected]>> wrote: > > > > I have a function that is recording which unit is using a > > specific resource. I wrote the function to take a UnitTag, > > because that's the closest thing we have to an ID type. However, > > I and others seem to remember hearing that Tags are really only > > supposed to be used for the API. That leaves me with a problem - > > what can I pass to this function to indicate which unit I'm > > talking about? I'd be fine passing a pointer to the unit object > > itself, but we're trying to avoid direct dependencies on state. > > People have suggested just passing a string (presumably > > unit.Tag().String()), but then my API is too lenient - it > > appears to say "give me any string you want for an id", but what > > it really means is "give me a serialized UnitTag". > > > > I think most places in the code just use a string for an ID, but > > this opens up the code to abuses and developer errors. > > > > Can someone explain why tags should only be used in the API? It > > seems like the perfect type to pass around to indicate the ID of > > a specific object. > > > > -Nate > > > > -- > > Juju-dev mailing list > > [email protected] <mailto:[email protected]> > > Modify settings or unsubscribe at: > > https://lists.ubuntu.com/mailman/listinfo/juju-dev > > > > > > > >
-- Juju-dev mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/juju-dev
