def validate_labels(skill_config, skill_config_path): labels = 'labels' if labels in skill_config.keys(): if skill_config[labels] is None or len(skill_config[labels]) < 1: raise SkillYamlInvalidValueError(labels, skill_config_path) for label in skill_config[labels]: if not label: raise SkillYamlInvalidValueError(labels, skill_config_path)
def validate_contract(skill_config, skill_config_path): contract = "contract" if contract not in skill_config.keys(): raise SkillYamlMissingKeyError(contract, skill_config_path) if skill_config[contract] is None or len(skill_config[contract]) < 1: raise SkillYamlInvalidValueError(contract, skill_config_path) for label in skill_config[contract]: if not label: raise SkillYamlInvalidValueError(contract, skill_config_path)
def validate_authors(skill_config, skill_config_path): authors = 'authors' if authors in skill_config.keys(): valid_email_pattern = r"^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$" if skill_config[authors] is None or len(skill_config[authors]) < 1: raise SkillYamlInvalidValueError(authors, skill_config_path) for author in skill_config[authors]: if not re.search(valid_email_pattern, author): raise SkillYamlInvalidValueError(authors, skill_config_path)
def validate_permissions(skill_config, skill_config_path): permissions = 'permissions' if permissions in skill_config.keys(): if skill_config[permissions] is None or len( skill_config[permissions]) < 1: raise SkillYamlInvalidValueError(permissions, skill_config_path) for permission in skill_config[permissions]: if not permission: raise SkillYamlInvalidValueError(permissions, skill_config_path)
def validate_properties(skill_config, skill_config_path): properties = "properties" if properties not in skill_config.keys(): raise SkillYamlMissingKeyError(properties, skill_config_path) if skill_config[properties] and len(skill_config[properties]) > 0: for property in skill_config[properties]: if not property: raise SkillYamlInvalidValueError( properties + ": " + property, skill_config_path) for key in property.keys(): if key not in ['name', 'desc', 'default', 'pattern']: raise SkillYamlInvalidValueError( properties + ": " + property + ": " + key, skill_config_path)
def validate_image(skill_config, skill_config_path): image = 'image' if image in skill_config.keys(): valid_image_pattern = r".+skill-runtime-python-[2,3]\.\d:\d\.\d\.\d" if skill_config[image] is None or not re.search( valid_image_pattern, skill_config[image]): raise SkillYamlInvalidValueError(image, skill_config_path)
def validate_license_url(skill_license, skill_config, skill_config_path): url = 'url' if url in skill_config[skill_license].keys(): if not skill_config[skill_license][url] or not validators.url( skill_config[skill_license][url]): raise SkillYamlInvalidValueError(skill_license + ': ' + url, skill_config_path)
def validate_function(handler, skill_config, skill_config_path): evaluation_function = 'function' if evaluation_function not in skill_config[handler].keys(): raise SkillYamlMissingKeyError( handler + ': ' + evaluation_function, skill_config_path) if not skill_config[handler][evaluation_function]: raise SkillYamlInvalidValueError( handler + ': ' + evaluation_function, skill_config_path)
def validate_file(handler, skill_config, skill_config_path): file = 'file' if file not in skill_config[handler].keys(): raise SkillYamlMissingKeyError(handler + ': ' + file, skill_config_path) if not skill_config[handler][file]: raise SkillYamlInvalidValueError(handler + ': ' + file, skill_config_path)
def validate_network_access(skill_config, skill_config_path): network_access = 'network_access' if network_access in skill_config.keys(): if not str(skill_config[network_access]) or str( skill_config[network_access]).lower() not in [ 'true', 'false' ]: raise SkillYamlInvalidValueError(network_access, skill_config_path)
def validate_cpu(skill_config, skill_config_path, resources): cpu = "cpu" if cpu not in skill_config[resources].keys(): raise SkillYamlMissingKeyError(resources + ": " + cpu, skill_config_path) min = "min" cpu_min_entry = resources + ": " + cpu + ": " + min if min not in skill_config[resources][cpu]: raise SkillYamlMissingKeyError(cpu_min_entry, skill_config_path) if not str(skill_config[resources][cpu][min]).isdigit() or int( skill_config[resources][cpu][min]) < 100: raise SkillYamlInvalidValueError(cpu_min_entry, skill_config_path)
def validate_memory(skill_config, skill_config_path, resources): memory = "memory" if memory not in skill_config[resources].keys(): raise SkillYamlMissingKeyError(resources + ": " + memory, skill_config_path) min = "min" memory_min_entry = resources + ": " + memory + ": " + min if min not in skill_config[resources][memory]: raise SkillYamlMissingKeyError(memory_min_entry, skill_config_path) if not str(skill_config[resources][memory][min]).isdigit() or int( skill_config[resources][memory][min]) < 128: raise SkillYamlInvalidValueError(memory_min_entry, skill_config_path)
def validate_composable(skill_config, skill_config_path): composable = 'composable' if composable in skill_config.keys(): if not str(skill_config[composable]) or str( skill_config[composable]).lower() not in ['true', 'false']: raise SkillYamlInvalidValueError(composable, skill_config_path)
def validate_owner(skill_config, skill_config_path): owner = 'owner' if owner not in skill_config.keys(): raise SkillYamlMissingKeyError(owner, skill_config_path) if not skill_config[owner]: raise SkillYamlInvalidValueError(owner, skill_config_path)
def validate_name(skill_config, skill_config_path): name = 'name' if name not in skill_config.keys(): raise SkillYamlMissingKeyError(name, skill_config_path) if not skill_config[name]: raise SkillYamlInvalidValueError(name, skill_config_path)
def validate_version_control(skill_config, skill_config_path): scm = 'scm' if scm in skill_config.keys(): if not skill_config[scm] or not validators.url(skill_config[scm]): raise SkillYamlInvalidValueError(scm, skill_config_path)
def validate_license_name(skill_license, skill_config, skill_config_path): name = 'name' if name in skill_config[skill_license].keys(): if not skill_config[skill_license][name]: raise SkillYamlInvalidValueError(skill_license + ': ' + name, skill_config_path)
def validate_license_visibility(skill_config, skill_config_path): visibility = 'visibility' if visibility in skill_config.keys(): if not skill_config[visibility]: raise SkillYamlInvalidValueError(visibility, skill_config_path)