'Attempt to validate the artifact has been well defined.
This is used to enforce Artifact rules. Since it checks all dependencies are
present, this method can only be called once all artifacts have been loaded
into the registry. Use ValidateSyntax to check syntax for each artifact on
import.
Raises:
ArtifactDefinitionError: If artifact is invalid.'

def Validate(self):

    self.ValidateSyntax()
    try:
        for dependency in self.GetArtifactDependencies():
            dependency_obj = REGISTRY.GetArtifact(dependency)
            if dependency_obj.error_message:
                raise ArtifactDefinitionError(('Dependency    %s    has    an    error!' % dependency))
    except ArtifactNotRegisteredError as e:
        raise ArtifactDefinitionError(e)
