Introducing Linden Lab's open source clusto repositories

18 views
Skip to first unread message

Lex Linden

unread,
Apr 20, 2011, 4:24:53 PM4/20/11
to clusto
After a standard internal approval process for going forward with an
open source project, I'm proud to announce that Linden Lab has made
available two repositories on github.com with contributions to the
Clusto project.

We have two repositories: a fork of the main clusto codebase and a new
project, python-llclusto-linden. You can find them here:

https://github.com/lindenlab/clusto
https://github.com/lindenlab/python-llclusto-linden

In each repository, we'll be doing our development work in the
"development" branch. When we have an RC ready, we merge the changes
into the "staging" branch, from which our internal build system
automatically pulls and produces a debian-based system image for us,
incorporating the new code (ask me for details if you're interested!).

There're a few more branches in the clusto repo that we'll use to manage
our contributions back to upstream. We'll send pull requests once we've
deployed our clusto changes internally and made sure everything works
nicely.

Python-llclusto-linden contains a set of Drivers we've been developing
over the past couple of weeks to model our infrastructure. We kept this
separate so that we wouldn't need to get a bunch of Linden-specific code
accepted into the main clusto project. Python-llclusto-linden parallels
a lot of the structure of clusto, with a driver heirarchy, a test
heirarchy, and module-level utility functions.

Especially of interest is our LindenEquipment class. We often find
ourselves in the position of needing to change the hostname of a system
to use it for a different purpose. Renaming entities in clusto is
possible, but it's kind of a violent proposition (the rename code
deletes the old entity, creates a new one, and copies over all
attributes). Instead, LindenEquipment automatically assigns an entity
name (using an internally managed instance of SimpleNameManager), and a
hostname can be assigned later on.

I also have "fixes" and "features" branches in my fork of clusto.
"fixes" is merged up to lindenlab/clusto's development branch, but
"features" contains a couple of new tidbits not yet merged in. We'll be
contributing these upstream in the coming months.

Let us know if you have any questions, comments, or contributions on our
code!

Ron

unread,
Apr 20, 2011, 4:42:19 PM4/20/11
to clusto
I had put code in the device.py base class (
https://github.com/clusto/clusto/blob/master/src/clusto/drivers/base/device.py
) for dealing with hostname changes. All servers inherit this class.
So you could do:

s = SomeServerClass("fooserver1")
print s.hostname # prints the entity name: fooserver1
s.hostname = "awesome-web-server-name"
print s.hostname # prints: awesome-web-server-name
print s.name # prints: fooserver1 ; entity name doesn't change

So if you just use s.hostname whenever you need a hostname it'll work
whether you use the entity name or whether you want to set the
hostname separately.

-Ron

On Apr 20, 1:24 pm, Lex Linden <l...@lindenlab.com> wrote:
> After a standard internal approval process for going forward with an
> open source project, I'm proud to announce that Linden Lab has made
> available two repositories on github.com with contributions to the
> Clusto project.
>
> We have two repositories: a fork of the main clusto codebase and a new
> project, python-llclusto-linden.  You can find them here:
>
> https://github.com/lindenlab/clustohttps://github.com/lindenlab/python-llclusto-linden

Ron

unread,
Apr 20, 2011, 4:45:25 PM4/20/11
to clusto
Also, thanks for the contributions! Always happy to see people using
clusto and improving it. -Ron

On Apr 20, 1:42 pm, Ron <rong...@gmail.com> wrote:
> I had put code in the device.py base class  (https://github.com/clusto/clusto/blob/master/src/clusto/drivers/base/...
> ) for dealing with hostname changes.  All servers inherit this class.
> So you could do:
>
> s = SomeServerClass("fooserver1")
> print s.hostname  # prints the entity name: fooserver1
> s.hostname = "awesome-web-server-name"
> print s.hostname # prints: awesome-web-server-name
> print s.name # prints: fooserver1 ; entity name doesn't change
>
> So if you just use s.hostname whenever you need a hostname it'll work
> whether you use the entity name or whether you want to set the
> hostname separately.
>
> -Ron
>
> On Apr 20, 1:24 pm, Lex Linden <l...@lindenlab.com> wrote:
>
>
>
>
>
>
>
> > After a standard internal approval process for going forward with an
> > open source project, I'm proud to announce that Linden Lab has made
> > available two repositories on github.com with contributions to the
> > Clusto project.
>
> > We have two repositories: a fork of the main clusto codebase and a new
> > project, python-llclusto-linden.  You can find them here:
>
> >https://github.com/lindenlab/clustohttps://github.com/lindenlab/pytho...

Lex Linden

unread,
Apr 20, 2011, 5:05:46 PM4/20/11
to clu...@googlegroups.com, Ron
On 04/20/2011 04:42 PM, Ron wrote:
> I had put code in the device.py base class (
> https://github.com/clusto/clusto/blob/master/src/clusto/drivers/base/device.py
> ) for dealing with hostname changes. All servers inherit this class.
> So you could do:
>
> s = SomeServerClass("fooserver1")
> print s.hostname # prints the entity name: fooserver1
> s.hostname = "awesome-web-server-name"
> print s.hostname # prints: awesome-web-server-name
> print s.name # prints: fooserver1 ; entity name doesn't change
>
> So if you just use s.hostname whenever you need a hostname it'll work
> whether you use the entity name or whether you want to set the
> hostname separately.

Yup, we saw that. We have more complicated needs around hostnames, so
we ended up not using the hostname functionality in Device at all and
implementing our own HostnameMixin to handle it.

Jorge Gallegos

unread,
Apr 20, 2011, 8:11:02 PM4/20/11
to clu...@googlegroups.com
Wow, kickass repos guys, really happy you guys are liking clusto this much! :)
--
Jorge A Gallegos <k...@blegh.net>
http://kad.blegh.net
Reply all
Reply to author
Forward
0 new messages