3 \�me9 � @ s U d Z ddlZddlmZ ddlmZ ddlmZ ddlm Z m Z mZ ddlm Z ddlmZ dd lmZmZ dd lmZ dZdZd ddddd�iZdZdgZdddeeed�ed�ed�gedgd�Zeee�Z eje�Zeee edd�dd�Z d d!� Z!dS )"z&install and configure landscape client� N)�chain)�dedent)� ConfigObj)�subp� type_utils�util)�Cloud)�Config)� MetaSchema�get_meta_doc)�PER_INSTANCEz/etc/landscape/client.confz/etc/default/landscape-client�client�infoz.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)�id�name�title�description�distrosZexamplesZ frequencyZactivate_by_schema_keys)r �cfg�cloud�args�returnc C s� |j di �}t|t�s,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&