OS = 'general'
METADATA = {
    'general': {
        '_self': {
            'required_in_whole_config': True
        },
        'language': {
            '_self': {
                'field': 'general',
                'is_required': True,
                'default_value': 'EN',
                'options': ['EN', 'CN'],
                'mapping_to': 'language'
            }
        },
        'timezone': {
            '_self': {
                'field': 'general',
                'is_required': True,
                'default_value': 'UTC',
                'options': [
                    'America/New_York', 'America/Chicago',
                    'America/Los_Angeles', 'Asia/Shanghai',
                    'Asia/Tokyo', 'Europe/Paris',
                    'Europe/London', 'Europe/Moscow',
                    'Europe/Rome', 'Europe/Madrid',
                    'Europe/Berlin', 'UTC'
                ],
                'mapping_to': 'timezone'
            }
        },
        'http_proxy': {
            '_self': {
                'field': 'url',
                'default_callback': default_proxy,
                'options_callback': proxy_options,
                'mapping_to': 'http_proxy'
            }
        },
        'https_proxy': {
            '_self': {
                'field': 'url',
                'default_callback': default_proxy,
                'options_callback': proxy_options,
                'mapping_to': 'https_proxy'
            }
        },
        'no_proxy': {
            '_self': {
                'field': 'general_list',
		'default_callback': default_noproxy,
		'options_callback': noproxy_options,
                'autofill_callback': autofill_no_proxy,
                'mapping_to': 'no_proxy'
            }
        },
        'ntp_server': {
            '_self': {
                'is_required': True,
                'field': 'string',
		'default_callback': default_ntp_server,
                'options_callback': ntp_server_options,
                'mapping_to': 'ntp_server'
            }
        },
        'dns_servers': {
            '_self': {
                'is_required': True,
                'field': 'ip_list',
		'default_callback': default_dns_servers,
                'options_callback': dns_servers_options,
                'mapping_to': 'nameservers'
            }
        },
        'domain': {
            '_self': {
                'field': 'domain',
                'is_required' : True,
		'default_callback': default_domain,
                'options_callback': domain_options,
            }
        },
        'search_path': {
            '_self': {
                'field': 'general_list',
                'default_callback': default_search_path,
                'options_callback': search_path_options,
                'mapping_to': 'search_path'
            }
        },
        'default_gateway': {
            '_self': {
                'is_required': True,
                'field': 'ip',
                'default_callback': default_gateway,
                'mapping_to': 'gateway'
            }
        },
        'local_repo': {
            '_self': {
                'field': 'url',
                'default_callback': default_localrepo,
                'mapping_to': 'local_repo'
            }
        },
        'repo_name': {
            '_self': {
                'field': 'string',
                'mapping_to': 'repo_name'
            }
        },
        'deploy_type': {
            '_self': {
                'field': 'general',
                'is_required': True,
                'default_value': 'baremetal',
                'options': [
                    'baremetal', 'virtual'
                 ],
                'mapping_to': 'deploy_type'
            }
        },
    },
    'server_credentials': {
        '_self': {
            'required_in_whole_config': True,
            'mapping_to': 'server_credentials'
        },
        'username': {
            '_self': {
                'is_required': True,
		'default_value': 'root',
                'field': 'username',
                'mapping_to': 'username'
            }
        },
        'password': {
            '_self': {
                'is_required': True,
		'default_value': 'root',
                'field': 'password',
                'mapping_to': 'password'
            }
        }
    },
    'partition': {
        '_self': {
            'required_in_whole_config': True,
            'options': ['/boot', 'swap', '/var', '/home'],
            'mapping_to': 'partition'
        },
        '$partition': {
            '_self': {
                'validator': is_valid_partition,
		'mapping_to': '$partition'
            },
            'max_size': {
                '_self': {
                    'field': 'size',
                    'mapping_to': 'max_vol_size'
                },
            },
            'percentage': {
                '_self': {
                    'field': 'percentage',
                    'default_value': 10,
                    'mapping_to': 'vol_percentage'
                }
            },
            'size': {
                '_self': {
                    'field': 'size',
		    'default_value': '1G',
                    'mapping_to': 'vol_size'
                },
            }
        }
    }
}