예제 #1
0
파일: preseed.py 프로젝트: sfeole/maas
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}
예제 #2
0
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}