Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add command for uploading file to SUBNET issue #4854

Merged
merged 4 commits into from
Mar 7, 2024

Conversation

anjalshireesh
Copy link
Contributor

@anjalshireesh anjalshireesh commented Feb 22, 2024

Community Contribution License

All community contributions in this pull request are licensed to the project maintainers
under the terms of the Apache 2 license.
By creating this pull request I represent that I have the right to license the
contributions to the project maintainers under the Apache 2 license.

Description

mc support upload --issue <issueNum> --comment <msg> <alias> </path/to/file>

Will upload the given file to the given SUBNET issue
The file will be compressed using zstd before upload.

Motivation and Context

For customer's ease of sharing required logs to SUBNET issues

How to test this PR?

mc support upload --issue <issueNum> --comment <msg> <alias> </path/to/file>

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Optimization (provides speedup with no functional changes)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • Fixes a regression (If yes, please add commit-id or PR # here)
  • Unit tests added/updated
  • Internal documentation updated
  • Create a documentation update request here

@anjalshireesh anjalshireesh changed the title Add command for uploading file to SUBNET issue [WIP] Add command for uploading file to SUBNET issue Feb 22, 2024
@anjalshireesh anjalshireesh changed the title [WIP] Add command for uploading file to SUBNET issue Add command for uploading file to SUBNET issue Feb 23, 2024
@anjalshireesh anjalshireesh marked this pull request as ready for review February 23, 2024 07:08
cmd/support-upload.go Outdated Show resolved Hide resolved
cmd/support-upload.go Outdated Show resolved Hide resolved
cmd/subnet-utils.go Outdated Show resolved Hide resolved
cmd/support-upload.go Outdated Show resolved Hide resolved
@klauspost
Copy link
Contributor

Should we apply compression if not already compressed?

Other than the reduced transfer size, it has the added benefit that it will wrap potentially harmful files and not be directly executable.

The server should not do anything do decompress, but we add a field just to be nice.

Adding it is pretty trivial:

	go func() {
		var (
			part io.Writer
			e    error
		)
		defer func() {
			mwriter.Close()
			w.CloseWithError(e)
		}()

		file, e := os.Open(filePath)
		if e != nil {
			return
		}
		defer file.Close()
		doComp := true
			if strings.HasSuffix(strings.ToLower(filePath), ext) {
				doComp = false
				break
			}
		}
		if doComp {
			mwriter.WriteField("auto-compression", "zstd")
			filePath += ".zst"
		}
		part, e = mwriter.CreateFormFile("file", filepath.Base(filePath))
		if e != nil {
			return
		}

		if doComp {
			z, _ := zstd.NewWriter(part, zstd.WithEncoderConcurrency(2))
			defer z.Close()
			_, e = z.ReadFrom(file)
		} else {
			_, e = io.Copy(part, file)
		}
	}()

mc support upload --issue <issueNum> --comment <msg> <alias> </path/to/file>

Will upload the given file to the given SUBNET issue
and a few minor improvements like changing year in copyright notice and
command usage.
@anjalshireesh
Copy link
Contributor Author

Should we apply compression if not already compressed?

Other than the reduced transfer size, it has the added benefit that it will wrap potentially harmful files and not be directly executable.

The server should not do anything do decompress, but we add a field just to be nice.

Adding it is pretty trivial:

	go func() {
		var (
			part io.Writer
			e    error
		)
		defer func() {
			mwriter.Close()
			w.CloseWithError(e)
		}()

		file, e := os.Open(filePath)
		if e != nil {
			return
		}
		defer file.Close()
		doComp := true
			if strings.HasSuffix(strings.ToLower(filePath), ext) {
				doComp = false
				break
			}
		}
		if doComp {
			mwriter.WriteField("auto-compression", "zstd")
			filePath += ".zst"
		}
		part, e = mwriter.CreateFormFile("file", filepath.Base(filePath))
		if e != nil {
			return
		}

		if doComp {
			z, _ := zstd.NewWriter(part, zstd.WithEncoderConcurrency(2))
			defer z.Close()
			_, e = z.ReadFrom(file)
		} else {
			_, e = io.Copy(part, file)
		}
	}()

Have implemented this. PTAL.

Copy link
Contributor

@shtripat shtripat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@harshavardhana harshavardhana merged commit daf5b18 into minio:master Mar 7, 2024
5 checks passed
@anjalshireesh anjalshireesh deleted the upload-attachment branch March 7, 2024 04:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants