def get_curtin_cloud_config(node): """Compose the curtin cloud-config, which is only applied to Ubuntu core (by curtin).""" token = NodeKey.objects.get_token_for_node(node) rack_controller = node.get_boot_rack_controller() base_url = rack_controller.url datasource = { 'datasource': { 'MAAS': { 'consumer_key': token.consumer.key, 'token_key': token.key, 'token_secret': token.secret, 'metadata_url': absolute_reverse('metadata', base_url=base_url), } } } config = { 'maas-datasource': { 'path': '/etc/cloud/cloud.cfg.d/90_maas_datasource.cfg', 'content': 'datasource_list: [ MAAS ]', }, 'maas-cloud-config': { 'path': '/etc/cloud/cloud.cfg.d/90_maas_cloud_config.cfg', 'content': "#cloud-config\n%s" % yaml.safe_dump(datasource) }, } # Add the Ubuntu SSO email if its set on the user. if node.owner is not None and node.owner.email: config['maas-ubuntu-sso'] = { 'path': '/etc/cloud/cloud.cfg.d/90_maas_ubuntu_sso.cfg', 'content': "#cloud-config\n%s" % yaml.safe_dump({'snappy': { 'email': node.owner.email }}) } config['maas-reporting'] = { 'path': '/etc/cloud/cloud.cfg.d/90_maas_cloud_init_reporting.cfg', 'content': '#cloud-config\n%s' % yaml.safe_dump( get_cloud_init_reporting(node=node, token=token, base_url=base_url)) } return {'cloudconfig': config}
def get_curtin_cloud_config(request, node): """Compose the curtin cloud-config, which is only applied to Ubuntu core (by curtin).""" token = NodeKey.objects.get_token_for_node(node) datasource = { "datasource": { "MAAS": { "consumer_key": token.consumer.key, "token_key": token.key, "token_secret": token.secret, "metadata_url": request.build_absolute_uri(reverse("metadata")), } } } config = { "maas-datasource": { "path": "/etc/cloud/cloud.cfg.d/90_maas_datasource.cfg", "content": "datasource_list: [ MAAS ]", }, "maas-cloud-config": { "path": "/etc/cloud/cloud.cfg.d/90_maas_cloud_config.cfg", "content": "#cloud-config\n%s" % yaml.safe_dump(datasource), }, } # Add the Ubuntu SSO email if its set on the user. if node.owner is not None and node.owner.email: config["maas-ubuntu-sso"] = { "path": "/etc/cloud/cloud.cfg.d/90_maas_ubuntu_sso.cfg", "content": "#cloud-config\n%s" % yaml.safe_dump({"snap": { "email": node.owner.email }}), } config["maas-reporting"] = { "path": "/etc/cloud/cloud.cfg.d/90_maas_cloud_init_reporting.cfg", "content": "#cloud-config\n%s" % yaml.safe_dump(get_cloud_init_reporting(request, node, token)), } return {"cloudconfig": config}