LINUX.ORG.RU

История изменений

Исправление gagarin0, (текущая версия) :

для решения подобных задач мне потребовалось накостылить ужасную связку между execfuse + оторванные куски jinja template из ansible + yaml

ниже пример при запуске команды ls в точке монтирования fuse сервер запустит текстовый браузер, который получит таблицу Менделеева с википедии и отразит ее в виде файлового дерева.

# /mnt/periodic_table/Ca
# ├── density
# ├── image
# ├── melt
# ├── name
# ├── number
# ├── period
# └── phase
# $ cat /mnt/periodic_table/Ca/period
# 4
fs:
  "/":                                                    
    readdir: 
      sh: |
        lynx -nonumbers -dump -width 256 https://en.wikipedia.org/wiki/List_of_chemical_elements | grep -E '^   [0-9]+ [A-Z]' | awk '{print $2}'
    getattr: 
      sh: *dir
      "/[A-Za-z]+": #                                           # /<element_name>
      cache: 3600000 #in second
      name: element_name
      getattr: 
        sh: *dir
      readdir: 
        list:
          - name
          - density
          - melt
          - number
          - period
          - phase
          - image
        
      "/image":
        cache: 9600 # in seconds
        read_file: 
          sh: |
            curl https://www.inorganicventures.com/pub/media/inorganicperiodictable/elements/${element_name}.gif | convert gif:- png:-
        getattr: 
          sh: *file
           

Исправление gagarin0, :

для решения подобных задач мне потребовалось накостылить ужасную связку между execfuse + оторванные куски jinja template из ansible + yaml

ниже пример при запуске команды ls в точке монтирования fuse сервер запустит текстовый браузер, который получит таблицу Менделеева с википедии и отразит ее в виде файлового дерева.

# /mnt/periodic_table/Ca
# ├── density
# ├── image
# ├── melt
# ├── name
# ├── number
# ├── period
# └── phase
# $ cat /tmp/p/Ca/period
# 4
fs:
  "/":                                                    
    readdir: 
      sh: |
        lynx -nonumbers -dump -width 256 https://en.wikipedia.org/wiki/List_of_chemical_elements | grep -E '^   [0-9]+ [A-Z]' | awk '{print $2}'
    getattr: 
      sh: *dir
      "/[A-Za-z]+": #                                           # /<element_name>
      cache: 3600000 #in second
      name: element_name
      getattr: 
        sh: *dir
      readdir: 
        list:
          - name
          - density
          - melt
          - number
          - period
          - phase
          - image
        
      "/image":
        cache: 9600 # in seconds
        read_file: 
          sh: |
            curl https://www.inorganicventures.com/pub/media/inorganicperiodictable/elements/${element_name}.gif | convert gif:- png:-
        getattr: 
          sh: *file
           

Исходная версия gagarin0, :

для решения подобных задач мне потребовалось накостылить ужасную связку между jinja2 template + yaml + execfuse

ниже пример при запуске команды ls в точке монтирования fuse сервер запустит текстовый браузер, который получит таблицу Менделеева с википедии и отразит ее в виде файлового дерева.

# /mnt/periodic_table/Ca
# ├── density
# ├── image
# ├── melt
# ├── name
# ├── number
# ├── period
# └── phase
# $ cat /tmp/p/Ca/period
# 4
fs:
  "/":                                                    
    readdir: 
      sh: |
        lynx -nonumbers -dump -width 256 https://en.wikipedia.org/wiki/List_of_chemical_elements | grep -E '^   [0-9]+ [A-Z]' | awk '{print $2}'
    getattr: 
      sh: *dir
      "/[A-Za-z]+": #                                           # /<element_name>
      cache: 3600000 #in second
      name: element_name
      getattr: 
        sh: *dir
      readdir: 
        list:
          - name
          - density
          - melt
          - number
          - period
          - phase
          - image
        
      "/image":
        cache: 9600 # in seconds
        read_file: 
          sh: |
            curl https://www.inorganicventures.com/pub/media/inorganicperiodictable/elements/${element_name}.gif | convert gif:- png:-
        getattr: 
          sh: *file