3 \me9 @ s U d Z ddlZddlmZ ddlmZ ddlmZ ddlm Z m Z mZ ddlm Z ddlmZ dd lmZmZ dd lmZ dZdZd dddddiZdZdgZdddeeedededgedgdZeeeZ ejeZeee eddddZ d d! Z!dS )"z&install and configure landscape client N)chain)dedent) ConfigObj)subp type_utilsutil)Cloud)Config) MetaSchemaget_meta_doc)PER_INSTANCEz/etc/landscape/client.confz/etc/default/landscape-clientclientinfoz.https://landscape.canonical.com/message-systemz#http://landscape.canonical.com/pingz/var/lib/landscape/client)Z log_levelZurlZping_urlZ data_patha This module installs and configures ``landscape-client``. The landscape client will only be installed if the key ``landscape`` is present in config. Landscape client configuration is given under the ``client`` key under the main ``landscape`` config key. The config parameters are not interpreted by cloud-init, but rather are converted into a ConfigObj formatted file and written out to the `[client]` section in ``/etc/landscape/client.conf``. The following default client config is provided, but can be overridden:: landscape: client: log_level: "info" url: "https://landscape.canonical.com/message-system" ping_url: "http://landscape.canoncial.com/ping" data_path: "/var/lib/landscape/client" .. note:: see landscape documentation for client config keys .. note:: if ``tags`` is defined, its contents should be a string delimited with ``,`` rather than a list ZubuntuZcc_landscapeZ Landscapez&Install and configure landscape clienta # To discover additional supported client keys, run # man landscape-config. landscape: client: url: "https://landscape.canonical.com/message-system" ping_url: "http://landscape.canonical.com/ping" data_path: "/var/lib/landscape/client" http_proxy: "http://my.proxy.com/foobar" https_proxy: "https://my.proxy.com/foobar" tags: "server,cloud" computer_title: "footitle" registration_key: "fookey" account_name: "fooaccount" z # Minimum viable config requires account_name and computer_title landscape: client: computer_title: kiosk 1 account_name: Joe's Biz aW # To install landscape-client from a PPA, specify apt.sources apt: sources: trunk-testing-ppa: source: ppa:landscape/self-hosted-beta landscape: client: account_name: myaccount computer_title: himom landscape)idnametitledescriptiondistrosZexamplesZ frequencyZactivate_by_schema_keys)r cfgcloudargsreturnc C s |j di }t|ts,tdjtj|d|s4dS |jjdg t t |g}ttdd t t|d j D }tjd d g| tjtd dS )z Basically turn a top level 'landscape' entry with a 'client' dict and render it to ConfigObj format under '[client]' section in /etc/landscape/client.conf r zR'landscape' key existed in config, but not a dictionary type, is a {_type} instead)Z_typeNzlandscape-clientc S s&