dgarstang1 | hey how does that hostname thing work? | 00:19 |
---|---|---|
harlowja | so usually datasources provide metadata and read it in | 00:22 |
harlowja | and all these modules get activated, they get passed the data from config and metadata and all that | 00:22 |
harlowja | and then they just use it to do whatever the module wants to do | 00:22 |
harlowja | in this case it calls into a distro specific object (since setting the hostname is distro dependent) and sets it | 00:23 |
dgarstang1 | harlowja: so.... it doesn't actually set the hostname? | 00:24 |
harlowja | the module has access to this distrobution specific object, it asks that object to set the hostname | 00:24 |
dgarstang1 | cuz... the hostname format is a highly specific thing isn't it? | 00:24 |
harlowja | not the hostname format | 00:24 |
harlowja | the way to set it seems to be | 00:24 |
harlowja | different in freebsd, ubuntu, rhel | 00:24 |
harlowja | rhel has a /etc/syconfig file | 00:25 |
harlowja | ubuntu has a different one | 00:25 |
dgarstang1 | lemme try a different angle... where does it get the source of the hostname? | 00:25 |
harlowja | from the datasource | 00:25 |
harlowja | http://bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/view/head:/cloudinit/sources/__init__.py#L164 | 00:25 |
harlowja | the datasource gets it from some location | 00:26 |
harlowja | *datasource specific | 00:26 |
harlowja | which u would think in the GCE datasource would be there metadata server | 00:26 |
dgarstang1 | yes, but where in the data source? what key? | 00:26 |
harlowja | see above function | 00:26 |
harlowja | basically datasources when they fetch there data populate self.metadata | 00:27 |
dgarstang1 | 'local-hostname' ? | 00:27 |
dgarstang1 | is this stuff documented somewhere? | 00:27 |
dgarstang1 | how would I have known it's local-hostname and not hostname? | 00:27 |
dgarstang1 | man I am confused | 00:29 |
dgarstang1 | http://cloudinit.readthedocs.org/en/latest/topics/modules.html .... nothing. No modules. | 00:29 |
dgarstang1 | for that matter, if GCE is in the latest version of cloudinit, where is it documented? There's no mention of it at http://cloudinit.readthedocs.org/en/latest/topics/datasources.html | 00:30 |
harlowja | dgarstang1 its not in any cloud-init i know about, seems to have been a debian specific patch | 00:31 |
harlowja | so its not in the upstream cloud-init, so wouldn't be on cloudinit.readthedocs.org | 00:31 |
dgarstang1 | harlowja: ok, how about docs on the set_hostname module? | 00:31 |
harlowja | probably not as good as it could be | 00:31 |
dgarstang1 | http://cloudinit.readthedocs.org/en/latest/topics/datasources.html#ec2 ... 'Metadata is accessible via the following URL:'... how's that relevant? | 00:32 |
dgarstang1 | isn't cloud-init supposed to abstract that so I can't see it and don't care? | 00:32 |
dgarstang1 | I'd really liketo know how the set_hostname module works, like what key in the metadata it reas | 00:33 |
harlowja | python is pretty readible, so http://bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/view/head:/cloudinit/sources/__init__.py#L164 sorta describes the whole process | 00:33 |
dgarstang1 | ah the old read the code reply. :) | 00:34 |
dgarstang1 | code always lacks context | 00:34 |
dgarstang1 | like, if I am reading the code for cloudinit __init__, why does it have a get_hostname function there? wouldn't that be in the get_hostname module? Doesn't that mean it's in a different python file somewhere else? | 00:35 |
harlowja | dgarstang1 not really, there is a baseclass for datasources in __init__ | 00:37 |
dgarstang1 | so maybe I need to read this source file, but ... wait... there's a module called update_hostname, which isn't here | 00:37 |
harlowja | the function is in this baseclass | 00:37 |
harlowja | right, modules != datasources | 00:37 |
dgarstang1 | harlowja: so where's the code for set_hostname? | 00:38 |
harlowja | it isn't in 1 place, it begins its life in the update_hostname module | 00:38 |
dgarstang1 | in that case, docs would be nice. :) | 00:38 |
harlowja | sure, i'd much appreciate them also, but not enough time in the day :) | 00:39 |
dgarstang1 | or, we'll just keep doing what we are doing and hacking it, not fully using the features of cloud init, and reading the hostname from the metadata ourselves and setting it in a runcmd section | 00:39 |
harlowja | sure, or feel free to keep on asking questions and we can provide answers, and presto a doc that u can then submit ;) | 00:39 |
dgarstang1 | harlowja: well, I dunno | 00:40 |
harlowja | i understand how this is not ideal, but it is what it is | 00:40 |
dgarstang1 | I'd ask what metadata the hostname module uses, but I don't even know if that's specific to the data source, or a common attribute for all | 00:40 |
harlowja | prior to before i created http://cloudinit.readthedocs.org it wasn't any better, but a collection of small improvements in the end makes it better for everyone :) | 00:40 |
harlowja | dgarstang1 its specific to a datasource | 00:41 |
harlowja | since different datasource retrieve it differently | 00:41 |
dgarstang1 | ok | 00:41 |
harlowja | so this then involves the question of what is the GCE thing doing (which i haven't seen the code for, since it never seems to have appeared upstream?) | 00:42 |
dgarstang1 | So, ec2 ds doesn't even have a set_hostname http://bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/view/head:/cloudinit/sources/DataSourceEc2.py | 00:42 |
harlowja | dgarstang1 right, thats what inheritence is for | 00:42 |
dgarstang1 | in fact, it's got almost nothing | 00:42 |
harlowja | base class usually provide most of the functionality | 00:42 |
dgarstang1 | ic | 00:43 |
harlowja | most datasources just provide def get_data(self): | 00:43 |
harlowja | which is there special way of reading | 00:43 |
harlowja | *which is the thing that varies | 00:43 |
dgarstang1 | Ok, so there's no set_hostname in DataSource either... http://bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/view/head:/cloudinit/sources/__init__.py | 00:44 |
harlowja | ah, my fault, thought u mean get_hostname | 00:44 |
harlowja | right, so datasources provide the data that other parts of cloud-init use | 00:44 |
harlowja | so it wouldn't make sense for a datasource to set anything | 00:44 |
dgarstang1 | well, the default cloud_init_modules has set_hostname, amongst oters | 00:45 |
harlowja | yes, modules (one of those is set_hostname) != datasourcs | 00:45 |
dgarstang1 | it doesnt make sense for a data source to set anything? who does? | 00:45 |
dgarstang1 | the set_hostname module? where's the code for that? | 00:45 |
harlowja | http://bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/view/head:/cloudinit/config/cc_set_hostname.py | 00:45 |
dgarstang1 | well that doesn't tell me what metadata it wants to use. | 00:46 |
dgarstang1 | ugh | 00:46 |
harlowja | util.get_hostname_fqdn | 00:47 |
dgarstang1 | still not seeing it, sorry | 00:48 |
harlowja | which itself will eventually call into the datasource get_hostname | 00:48 |
harlowja | so set_hostname calls first util.get_hostname_fqdn which eventually calls into datasource get_hostname (the base class) | 00:49 |
harlowja | so that tells u where it comes from | 00:49 |
harlowja | the base class then looks in a few places | 00:49 |
harlowja | http://bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/view/head:/cloudinit/sources/__init__.py#L164 | 00:49 |
harlowja | lhost = self.metadata['local-hostname'] | 00:49 |
harlowja | line 186 | 00:49 |
harlowja | then that module asks the distrobution specific object to set the hostname to this value | 00:50 |
harlowja | which will then do whatever distribution specific thing to set the hostname | 00:50 |
harlowja | self.metadata is populated by however the datasource fetches its data (which in your case would be whatever the gce datasource is doing) | 00:51 |
dgarstang1 | kk, thanks | 00:51 |
harlowja | np | 00:52 |
harlowja | so in the end it becomes a question what is the GCE datasource doing :) | 00:52 |
harlowja | and since i'm not sure where that code is, hard to know :-P | 00:52 |
=== harlowja is now known as harlowja_away |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!