private void validateUploadRequest(UploadRequest uploadRequest) { Assert.notNull(uploadRequest.getRepoName(), "Repo name can not be null"); Assert.notNull(uploadRequest.getName(), "Name of package can not be null"); Assert.notNull(uploadRequest.getVersion(), "Version can not be null"); try { Version.valueOf(uploadRequest.getVersion().trim()); } catch (ParseException e) { throw new SkipperException("UploadRequest doesn't have a valid semantic version. Version = " + uploadRequest.getVersion().trim()); } Assert.notNull(uploadRequest.getExtension(), "Extension can not be null"); Assert.isTrue(uploadRequest.getExtension().equals("zip"), "Extension must be 'zip', not " + uploadRequest.getExtension()); Assert.notNull(uploadRequest.getPackageFileAsBytes(), "Package file as bytes must not be null"); Assert.isTrue(uploadRequest.getPackageFileAsBytes().length != 0, "Package file as bytes must not be empty"); PackageMetadata existingPackageMetadata = this.packageMetadataRepository.findByRepositoryNameAndNameAndVersion( uploadRequest.getRepoName().trim(), uploadRequest.getName().trim(), uploadRequest.getVersion().trim()); if (existingPackageMetadata != null) { throw new SkipperException(String.format("Failed to upload the package. " + "" + "Package [%s:%s] in Repository [%s] already exists.", uploadRequest.getName(), uploadRequest.getVersion(), uploadRequest.getRepoName().trim())); } }
@Override public PackageMetadata upload(UploadRequest uploadRequest) { ParameterizedTypeReference<Resource<PackageMetadata>> typeReference = new ParameterizedTypeReference<Resource<PackageMetadata>>() { }; String url = String.format("%s/%s/%s", baseUri, "package", "upload"); log.debug("Uploading package {}-{} to repository {}.", uploadRequest.getName(), uploadRequest.getVersion(), uploadRequest.getRepoName()); HttpEntity<UploadRequest> httpEntity = new HttpEntity<>(uploadRequest); ResponseEntity<Resource<PackageMetadata>> resourceResponseEntity = restTemplate.exchange(url, HttpMethod.POST, httpEntity, typeReference); PackageMetadata packageMetadata = resourceResponseEntity.getBody().getContent(); return packageMetadata; }
@ShellMethod(key = "package upload", value = "Upload a package.") public String upload(@ShellOption(help = "the package to be uploaded") String path, @ShellOption(help = "the local repository name to upload to", defaultValue = NULL) String repoName) { UploadRequest uploadRequest = new UploadRequest(); try { File file = ResourceUtils.getFile(path); String zipFileName = file.getName(); String fileName = zipFileName.substring(0, zipFileName.lastIndexOf("-")); String versionAndExtension = zipFileName.substring(fileName.length() + 1); String extension = versionAndExtension.substring(versionAndExtension.lastIndexOf(".") + 1); String version = versionAndExtension.replaceAll("." + extension, ""); uploadRequest.setName(fileName); uploadRequest.setVersion(version); uploadRequest.setExtension(extension); uploadRequest.setRepoName(StringUtils.hasText(repoName) ? repoName : "local"); uploadRequest.setPackageFileAsBytes(Files.readAllBytes(file.toPath())); } catch (FileNotFoundException e) { throw new IllegalArgumentException("File Not found: " + e.getMessage()); } catch (IOException e) { throw new IllegalArgumentException(e.getMessage()); } PackageMetadata packageMetadata = skipperClient.upload(uploadRequest); return "Package uploaded successfully:[" + packageMetadata.getName() + ":" + packageMetadata.getVersion() + "]"; }
UploadRequest uploadRequest = new UploadRequest(); uploadRequest.setName(packageName); uploadRequest.setVersion(packageVersion); uploadRequest.setExtension("zip"); uploadRequest.setRepoName(repoName); // TODO use from skipperDeploymentProperties if set. try { uploadRequest.setPackageFileAsBytes(Files.readAllBytes(packageFile.toPath()));
@Override public PackageMetadata upload(UploadRequest uploadRequest) { ParameterizedTypeReference<Resource<PackageMetadata>> typeReference = new ParameterizedTypeReference<Resource<PackageMetadata>>() { }; String url = String.format("%s/%s/%s", baseUri, "package", "upload"); log.debug("Uploading package {}-{} to repository {}.", uploadRequest.getName(), uploadRequest.getVersion(), uploadRequest.getRepoName()); HttpEntity<UploadRequest> httpEntity = new HttpEntity<>(uploadRequest); ResponseEntity<Resource<PackageMetadata>> resourceResponseEntity = restTemplate.exchange(url, HttpMethod.POST, httpEntity, typeReference); PackageMetadata packageMetadata = resourceResponseEntity.getBody().getContent(); return packageMetadata; }
UploadRequest uploadRequest = new UploadRequest(); uploadRequest.setName(packageName); uploadRequest.setVersion(packageVersion); uploadRequest.setExtension("zip"); uploadRequest.setRepoName(repoName); // TODO use from skipperDeploymentProperties if set. try { uploadRequest.setPackageFileAsBytes(Files.readAllBytes(packageFile.toPath()));
private void validateUploadRequest(UploadRequest uploadRequest) { Assert.notNull(uploadRequest.getRepoName(), "Repo name can not be null"); Assert.notNull(uploadRequest.getName(), "Name of package can not be null"); Assert.notNull(uploadRequest.getVersion(), "Version can not be null"); try { Version.valueOf(uploadRequest.getVersion().trim()); } catch (ParseException e) { throw new SkipperException("UploadRequest doesn't have a valid semantic version. Version = " + uploadRequest.getVersion().trim()); } Assert.notNull(uploadRequest.getExtension(), "Extension can not be null"); Assert.isTrue(uploadRequest.getExtension().equals("zip"), "Extension must be 'zip', not " + uploadRequest.getExtension()); Assert.notNull(uploadRequest.getPackageFileAsBytes(), "Package file as bytes must not be null"); Assert.isTrue(uploadRequest.getPackageFileAsBytes().length != 0, "Package file as bytes must not be empty"); PackageMetadata existingPackageMetadata = this.packageMetadataRepository.findByRepositoryNameAndNameAndVersion( uploadRequest.getRepoName().trim(), uploadRequest.getName().trim(), uploadRequest.getVersion().trim()); if (existingPackageMetadata != null) { throw new SkipperException(String.format("Failed to upload the package. " + "" + "Package [%s:%s] in Repository [%s] already exists.", uploadRequest.getName(), uploadRequest.getVersion(), uploadRequest.getRepoName().trim())); } }
@Transactional public PackageMetadata upload(UploadRequest uploadRequest) { validateUploadRequest(uploadRequest); Repository localRepositoryToUpload = getRepositoryToUpload(uploadRequest.getRepoName()); Path packageDirPath = null; try { packageDirPath = TempFileUtils.createTempDirectory("skipperUpload"); File packageDir = new File(packageDirPath + File.separator + uploadRequest.getName()); packageDir.mkdir(); Path packageFile = Paths .get(packageDir.getPath() + File.separator + uploadRequest.getName() + "-" + uploadRequest.getVersion() + "." + uploadRequest.getExtension()); Assert.isTrue(packageDir.exists(), "Package directory doesn't exist."); Files.write(packageFile, uploadRequest.getPackageFileAsBytes()); ZipUtil.unpack(packageFile.toFile(), packageDir); String unzippedPath = packageDir.getAbsolutePath() + File.separator + uploadRequest.getName() + "-" + uploadRequest.getVersion(); File unpackagedFile = new File(unzippedPath); Assert.isTrue(unpackagedFile.exists(), "Package is expected to be unpacked, but it doesn't exist"); Package packageToUpload = this.packageReader.read(unpackagedFile); PackageMetadata packageMetadata = packageToUpload.getMetadata(); if (!packageMetadata.getName().equals(uploadRequest.getName()) || !packageMetadata.getVersion().equals(uploadRequest.getVersion())) { throw new SkipperException(String.format("Package definition in the request [%s:%s] " + "differs from one inside the package.yml [%s:%s]", uploadRequest.getName(), uploadRequest.getVersion(), packageMetadata.getName(), packageMetadata.getVersion())); packageMetadata.setPackageFile(new PackageFile((uploadRequest.getPackageFileAsBytes()))); return this.packageMetadataRepository.save(packageMetadata);
@Transactional public PackageMetadata upload(UploadRequest uploadRequest) { validateUploadRequest(uploadRequest); Repository localRepositoryToUpload = getRepositoryToUpload(uploadRequest.getRepoName()); Path packageDirPath = null; try { packageDirPath = TempFileUtils.createTempDirectory("skipperUpload"); File packageDir = new File(packageDirPath + File.separator + uploadRequest.getName()); packageDir.mkdir(); Path packageFile = Paths .get(packageDir.getPath() + File.separator + uploadRequest.getName() + "-" + uploadRequest.getVersion() + "." + uploadRequest.getExtension()); Assert.isTrue(packageDir.exists(), "Package directory doesn't exist."); Files.write(packageFile, uploadRequest.getPackageFileAsBytes()); ZipUtil.unpack(packageFile.toFile(), packageDir); String unzippedPath = packageDir.getAbsolutePath() + File.separator + uploadRequest.getName() + "-" + uploadRequest.getVersion(); File unpackagedFile = new File(unzippedPath); Assert.isTrue(unpackagedFile.exists(), "Package is expected to be unpacked, but it doesn't exist"); Package packageToUpload = this.packageReader.read(unpackagedFile); PackageMetadata packageMetadata = packageToUpload.getMetadata(); if (!packageMetadata.getName().equals(uploadRequest.getName()) || !packageMetadata.getVersion().equals(uploadRequest.getVersion())) { throw new SkipperException(String.format("Package definition in the request [%s:%s] " + "differs from one inside the package.yml [%s:%s]", uploadRequest.getName(), uploadRequest.getVersion(), packageMetadata.getName(), packageMetadata.getVersion())); packageMetadata.setPackageFile(new PackageFile((uploadRequest.getPackageFileAsBytes()))); return this.packageMetadataRepository.save(packageMetadata);