API

Welcome to the Nutanix NEXT community. To get started please read our short welcome post. Thanks!

cancel
Showing results for 
Search instead for 
Did you mean: 

Rest API v3 for creating vm with cloud-init config

SOLVED Go to solution
Highlighted
Adventurer

Rest API v3 for creating vm with cloud-init config

Hello, I am trying to create VM using Rest API v3, i get response code 202, but VM isn't created.

I get  the follow message in the Prism:

Create VM intentful - error.

I tried to use yaml/python but the result is the same.

If I use these settings in cloud-init settings:

#cloud-config

hostname: client

 I don't see any errors in the log of CVM connecting with creating VM.

however if use this config:

#cloud-config

hostname: ansible-client

i get the following message in the log:

2017-09-11 11:39:34 ERROR common.py:235 6c70031e-34e0-48b2-a037-ce97d1b95308 Error: {'reason': 'INTERNAL_ERROR', 'message': "'rZ.v)\\xe2\\xb6\\x1a,\\xb6v\\xa6y\\xa9\\xec\\x89\\xb9^rX\\x9e\\x9e\\xddt' has type bytes, but isn't in 7-bit ASCII encoding. Non-ASCII strings must be converted to unicode objects before being added."}

Stack: Traceback (most recent call last):

 

What I am doing wrong ? How to use cloud-init config with rest api ? 

 

P.S. everything looks fine, but doesn't work

2017-09-11 11:56:06 INFO intentengine_app.py:115 f6427b91-ce21-476c-9687-c1974b041972 vm,{u'status': {u'state': u'PENDING'}, u'uuid': u'58a64198-3d55-4aa1-9952-f255a262326e', u'intent_spec_uuid': u'5ce93840-49b2-4a08-8b55-fbd4732d78c0', u'permission_metadata': {u'trace': u'', u'session_log_uuid': u'f6427b91-ce21-476c-9687-c1974b041972', u'category_id_list': [], u'tenant_uuid': u'46a8a769-cca1-4915-8957-bc11cf98214e', u'owner_uuid': u'dfbde6f3-1702-4e84-a863-3007de36efac'}, u'method': u'post', u'task_uuid': u'8c681431-3afb-4296-a911-19ae15f411cb', u'domain_metadata': {u'username': u'admin', u'ds_domain': None}, u'spec': {u'name': u'client10', u'resources': {u'nic_list': [{u'subnet_reference': {u'kind': u'subnet', u'uuid': u'88ba1a7c-5989-43a8-831f-e6355bb2b6d9'}}], u'num_vcpus_per_socket': 1, u'num_sockets': 1, u'memory_size_mib': 1024, u'power_state': u'ON', u'guest_customization': {u'cloud_init': {u'user_data': u'#cloud-init\n\nhostname: "client10"'}}, u'disk_list': [{u'data_source_reference': {u'kind': u'image', u'uuid': u'c625aab3-3785-4aa7-b6b8-96d3841c2225', u'name': u'Centos7-cloudInit'}, u'device_properties': {u'device_type': u'DISK', u'disk_address': {u'device_index': 0, u'adapter_type': u'SCSI'}}}]}, u'cluster_reference': {u'kind': u'cluster', u'uuid': u'0005558c-536f-7adc-2348-001fc69c242b'}}, u'api_version': u'3.0', u'metadata': {u'kind': u'vm', u'uuid': u'58a64198-3d55-4aa1-9952-f255a262326e', u'categories': {}}}

1 ACCEPTED SOLUTION

Accepted Solutions
Nutanix Employee

Re: Rest API v3 for creating vm with cloud-init config

I believe the first line of the config file needs to be #cloud-config instead of #cloud-init: http://cloudinit.readthedocs.io/en/latest/topics/format.html#cloud-config-data

4 REPLIES
Nutanix Employee

Re: Rest API v3 for creating vm with cloud-init config

The contents for the attributes under guest_customization must be base64-encoded. Try encoding the object you're providing in user-data and see if that resolves the issue.

Adventurer

Re: Rest API v3 for creating vm with cloud-init config

Thanks, VM was created but cloud-init config didn't applied.

in the cloud-init log:

__init__.py[WARNING]: Unhandled non-multipart (text/x-not-multipart) userdata: '#cloud-init\n\nhostname: c...'

I have the same message in the log if I create VM using prism gui and type script in the gui according to this article:

http://next.nutanix.com/t5/Nutanix-Connect-Blog/Customizing-VMs-with-Cloud-init-on-Nutanix-AHV-Part-...

 

Nutanix Employee

Re: Rest API v3 for creating vm with cloud-init config

I believe the first line of the config file needs to be #cloud-config instead of #cloud-init: http://cloudinit.readthedocs.io/en/latest/topics/format.html#cloud-config-data

Adventurer

Re: Rest API v3 for creating vm with cloud-init config

You are totally right, I made too many files of cloud-init, and some of them was with that misprint.

Thank you for your help.