public static void createMetadata(FileSystem fs, Path path, String name) throws IOException { fs.mkdirs(path); FileSystemMetadataProvider.writeDescriptor(fs, path, name, descriptor); }
@Override public DatasetDescriptor update(String namespace, String name, DatasetDescriptor descriptor) { Preconditions.checkNotNull(namespace, "Namespace cannot be null"); Preconditions.checkNotNull(name, "Dataset name cannot be null"); Preconditions.checkNotNull(descriptor, "Descriptor cannot be null"); Compatibility.check(namespace, name, descriptor); LOG.debug("Saving dataset metadata name: {} descriptor: {}", name, descriptor); Path metadataPath = find(namespace, name); writeDescriptor(rootFileSystem, metadataPath, name, descriptor); return descriptor; }
@Override public DatasetDescriptor create(String namespace, String name, DatasetDescriptor descriptor) { Preconditions.checkNotNull(namespace, "Namespace cannot be null"); Preconditions.checkNotNull(name, "Dataset name cannot be null"); Preconditions.checkNotNull(descriptor, "Descriptor cannot be null"); Compatibility.check(namespace, name, descriptor); LOG.debug("Saving dataset metadata name:{} descriptor:{}", name, descriptor); // no need to check backward-compatibility when creating new datasets Path metadataLocation = pathForMetadata(namespace, name); try { if (rootFileSystem.exists(metadataLocation)) { throw new DatasetExistsException( "Descriptor directory already exists: " + metadataLocation); } // create the directory so that update can do the rest of the work rootFileSystem.mkdirs(metadataLocation); } catch (IOException e) { throw new DatasetIOException( "Unable to create metadata directory: " + metadataLocation + " for dataset: " + name, e); } writeDescriptor(rootFileSystem, metadataLocation, name, descriptor); return descriptor; }