amarao (amarao_san) wrote,
amarao
amarao_san

Странное

При всей душевырвистости jinja2/json_query, на выходе получается не длиннее, чем в питоне. За счёт отсутствия слоя трансляции аргументов, получается даже компактнее.

А степень читаемости уже определяется тем, насколько однострочники набуханы. Можно и не бухать.

Было:

class LookupModule(LookupBase):
    '''Generates aliases for rtt from global config'''
    def run(self, terms, **kwargs):
        data = terms or kwargs
        assigned_router = data['assigned_router']
        assigned_carriers = data['assigned_carriers']
        routers = data['routers']
        rtt_source_ips = []
        for router in routers:
            if router['name'] != assigned_router:
                continue
            for route in router.get('routes', []):
                if route['carrier'] in assigned_carriers:
                    if 'rtt_source_ip' in route:
                        rtt_source_ips.append(route['rtt_source_ip'])
        return rtt_source_ips

+

   include_role:
     name: ip_alias
   vars:
     ip_alias: "{{item}}"
     network_interfaces: /etc/network/interfaces.d/{{alias_iface}}.cfg
   with_irp_config_rtt_aliases:
     assigned_router: '{{assigned_router}}'
     assigned_carriers: '{{assigned_carriers}}'
     routers: '{{global_config["routers"]}}'
   when: alias_iface is defined
   tags:
    - ip


Стало:
- name: looping over assigned carriers
  include_tasks: process_carrier.yaml
  with_items: '{{all_assigned_router_routes}}'
  loop_control:
    loop_var: route
    label: '{{route.carrier}} @ {{route.rtt_source_ip|default("no ip")}}'
  when: route.rtt_source_ip is defined and route.carrier in assigned_carriers
  vars:
    routers: '{{global_config["routers"]}}'
    query: "[?name=='{{assigned_router}}'].routes"
    all_assigned_router_routes: '{{global_config.routers|json_query(query)}}'
Subscribe

  • мы их теряем!

    Make: 1976 Прямо сейчас выходят на пенсию люди, для которых make был новомодной технологией, которую притащили хипстеры.

  • Админская мудрость

    Когда вывод strace на башовый скрипт становится понятнее самого скрипта, граница разумности давно пройдена.

  • Rules of internet

    Rule 34. There is porn of it. Rule 35. It's used to mine cryptocurrencies.

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments