[ 
https://issues.apache.org/jira/browse/LIBCLOUD-356?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13911805#comment-13911805
 ] 

Michael Rommel commented on LIBCLOUD-356:
-----------------------------------------

Actually, I think this issue is mostly resolved in the current version of 
libcloud. Using salt-cloud (which in turn uses libcloud) I can successfully 
pass a --user-data file which gets appropriately send to openstack. What is 
missing though, is that the "config_drive": true parameter also gets passed on 
to Openstack, therefore the creation of the config_drive fails.

Here is an example of a compute-node with two running instances - one from nova 
and one via libcloud.

root@flycatcher:/var/lib/nova/instances# find .
.
./48711a02-3520-497d-963c-5a08c7745761
./48711a02-3520-497d-963c-5a08c7745761/console.log
./48711a02-3520-497d-963c-5a08c7745761/disk.config     <-- this is the instance 
from the nova boot command line
./48711a02-3520-497d-963c-5a08c7745761/disk
./48711a02-3520-497d-963c-5a08c7745761/libvirt.xml
./69037e7a-e1a3-401d-b2a6-e7193b61a748
./69037e7a-e1a3-401d-b2a6-e7193b61a748/console.log
./69037e7a-e1a3-401d-b2a6-e7193b61a748/disk            <-- the 
salt-cloud/libcloud instance is missing the config_drive
./69037e7a-e1a3-401d-b2a6-e7193b61a748/libvirt.xml
./compute_nodes
./locks
./locks/nova-_var_lib_nova_instances__base_2296e810ae1fb998bcf10f6b8855eab41839ee06
./locks/nova-_var_lib_nova_instances__base_9c5d06c1743b0c02e1cc688efc3d7d55b71bf5ce
./locks/nova-2296e810ae1fb998bcf10f6b8855eab41839ee06
./locks/nova-storage-registry-lock
./locks/nova-9c5d06c1743b0c02e1cc688efc3d7d55b71bf5ce
./_base
./_base/2296e810ae1fb998bcf10f6b8855eab41839ee06

If I start an instance from the nova boot line, this gets submitted:

{"server": {"name": "trusty", "imageRef": 
"7820539e-495d-4c32-8639-2ddfbbea6ea9", "flavorRef": "2", "user_data": 
"RnJvbSBub2JvZHkgU3VuIEZlYiAyMyAyMjoyODowNyAyMDE0CkNvbnRl. . . . . . . 
LT09PT09PT09PT09PT09PTE3OTAxMjExNDM2OTgyMzEzODA9PS0tCg==", "max_count": 1, 
"min_count": 1, "networks": [{"uuid": "ee43ec1d-0cb3-48ff-9dd1-10e9c995f4f0"}], 
"config_drive": true}}

This is in comparison the salt-cloud debug post to create the image:

{"server": {"name": "salty", "imageRef": 
"7820539e-495d-4c32-8639-2ddfbbea6ea9", "key_name": "salt-ssh-key", 
"flavorRef": "2", "user_data": 
"RnJvbSBub2JvZHkgU3VuIEZlYiAyMyAyMjoyODowNyAyMDE0CkNvbnRl. . . . . . . 
LT09PT09PT09PT09PT09PTE3OTAxMjExNDM2OTgyMzEzODA9PS0tCg==", "metadata": {}, 
"networks": [{"uuid": "ee43ec1d-0cb3-48ff-9dd1-10e9c995f4f0"}], "personality": 
[]}}

So I believe that the missing config_drive parameter is the culprit. I have 
checked the complete libcloud source tree and could not find any place where 
the  parameter gets set or submitted in the REST request.



> Provide user-data for Openstack driver
> --------------------------------------
>
>                 Key: LIBCLOUD-356
>                 URL: https://issues.apache.org/jira/browse/LIBCLOUD-356
>             Project: Libcloud
>          Issue Type: Improvement
>          Components: Compute
>    Affects Versions: 0.12.3
>         Environment: Libcloud 0.13.0 against Openstack
>            Reporter: Mattieu Puel
>              Labels: cloud-init, openstack, userdata
>             Fix For: 0.12.3
>
>   Original Estimate: 0.5h
>  Remaining Estimate: 0.5h
>
> libcloud openstack's driver supports parameter "user-data" (namely 
> ex_userdata) for providing user data to the instance. This is the equivalent 
> to "nova boot --user-data" parameter.
> With Openstack nova command, this results in providing the content of the 
> pointed file. You may for instance provide a shell script, a configuration 
> file for cloud-init...
> Once the VM startups, cloud-init retrieves the file from the metadata server 
> and uses it (executes it for shell scripts for instance).
> The libcloud behaviour is different: it simply passes the parameter content 
> as is.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to