• Как правильно зациклить изменения словаря?

    @DrPalmer Автор вопроса
    Они все тянутся друг за другом, так будет проще, если скину код?)
    import requests
    import json
    import re
    import random
    import yaml
    
    response = requests.get('http://127.0.0.1/asl_real.json')
    asl_vms = json.loads(response.text)
    vms = {}
    res_list = {'cpu', 'cpuNumber', 'disk', 'memory'}
    req_language = {'java', 'go'}
    nodes = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
    
    '''
    def get_next_hostname(hostname):
        for vm in asl_vms:
            hostname = vm['name']
            parts = hostname.split('-')
            number = int(parts[2].split('.')[0])
            y = '{}-{}-{}.node.eu.consul'.format(parts[0], parts[1], number + 6)
        return y
    '''
    def get_next_hostname(hostname):
        for vm in asl_vms:
            hostname = vm['name']
            service, lang, name = hostname.split('-')
            number = int(name.split('.')[0])
            y = '{}-{}-{}.node.eu.consul'.format(service, lang, number + 6)
        return y, service, number
    
    log = get_next_hostname('aff-java-8.node.eu.consul')
    print(log)
    
    def check_language(log):
        language = any(item in log for item in req_language)
        return language
    
    log1 = check_language(log)
    print(log1)
    
    def exit_log(language):
        print('contains? Answer:', str(bool(language)))
        return language
    
    #log2 = exit_log('language')
    #print(log2)
    
    def os_vers(req_language):
        for vm in asl_vms:
            hostname = vm['name']
            if re.match(r"Debian 10", vm['distribution']['description']):
                increment = 'vms_required'
            else:
                increment = 'vms_exist_updated'
        return increment
    
    increment = os_vers(req_language)
    print('increment from os_vers:', increment)
    
    def check_partmrs(vms, language, service, number):
        for vm in asl_vms:
            if service not in vms:
                vms[service] = {'language': language, 'memory': vm['memory'], 'disk': vm['disk'], 'cpu': vm['cpu'], 'cpuNumber': vm['cpuNumber'], 'vms_exist_updated': 0, 'vms_required': 0, 'max_index': number, 'nodes_used': {} }
            else:
                for res in res_list:
                    if vm[res] > vms[service][res]:
                        vms[service][res] = vm[res]
                if index > vms[service]['max_index']:
                    vms[service]['max_index'] = index
            vms[service][increment] += 1
        return vms[service]
    
    p = check_partmrs('vms', 'language', 'service', 'number')
    print(p)
    
    def exept_updated(increment):
        if increment == 'vms_exist_updated':
            if vm['nodeId'] in vms[service]['nodes_used']:
                vms[service]['nodes_used'][vm['nodeId']] += 1
            else:
                vms[service]['nodes_used'][vm['nodeId']] = 1
        return vms
    
    h = exept_updated(increment)
    print(json.dumps(vms))
  • Как правильно зациклить изменения словаря?

    @DrPalmer Автор вопроса
    там есть ранее def с проверкой на нужность апдейта или нет
    def os_vers(req_language):
        for vm in asl_vms:
            hostname = vm['name']
            if re.match(r"Debian 10", vm['distribution']['description']):
                increment = 'vms_required'
            else:
                increment = 'vms_exist_updated'
        return increment
    
    increment = os_vers(req_language)
    print('increment from os_vers:', increment)
  • Как передать часть массива в переменную?

    @DrPalmer Автор вопроса
    Но service возвращает полное название, а не часть с aff (из aff-java-8.node.eu.consul например)
    ...
            y = '{}-{}-{}.node.eu.consul'.format(service, lang, index + 6)
        return y, service
    log = get_next_hostname('aff-java-8.node.eu.consul')
    print(log)
    service = get_next_hostname('service')
    print(service)

    ➜  python python3 forforum.py
    ('aff-java-1343.node.eu.consul', 'aff')
    ('aff-java-1343.node.eu.consul', 'aff')
  • Как здесь правильно сделать split?

    @DrPalmer Автор вопроса
    Добрый человек, премного вам благодарен:)
  • Как здесь правильно сделать split?

    @DrPalmer Автор вопроса
    Пробовал int(parts[2])+6 , ошибка была таже кстати