in testSuite/cmd/create.go [45:190]
func init() {
resourceURL := ""
serviceType := EServiceType.Blob()
resourceType := EResourceType.SingleFile()
serviceTypeStr := ""
resourceTypeStr := ""
blobSize := uint32(0)
metadata := ""
contentType := ""
contentEncoding := ""
contentDisposition := ""
contentLanguage := ""
cacheControl := ""
contentMD5 := ""
location := ""
var tier *blob.AccessTier = nil
createCmd := &cobra.Command{
Use: "create",
Aliases: []string{"create"},
Short: "create creates resource.",
Args: func(cmd *cobra.Command, args []string) error {
if len(args) > 1 {
return fmt.Errorf("invalid arguments for create command")
}
resourceURL = args[0]
return nil
},
Run: func(cmd *cobra.Command, args []string) {
err := (&serviceType).Parse(serviceTypeStr)
if err != nil {
panic(fmt.Errorf("fail to parse service type %q, %v", serviceTypeStr, err))
}
err = (&resourceType).Parse(resourceTypeStr)
if err != nil {
panic(fmt.Errorf("fail to parse resource type %q, %v", resourceTypeStr, err))
}
var md5 []byte
if contentMD5 != "" {
md5 = []byte(contentMD5)
}
switch serviceType {
case EServiceType.Blob():
switch resourceType {
case EResourceType.Bucket():
createContainer(resourceURL)
case EResourceType.SingleFile():
createBlob(
resourceURL,
blobSize,
getMetadata(metadata),
&blob.HTTPHeaders{
BlobContentType: &contentType,
BlobContentDisposition: &contentDisposition,
BlobContentEncoding: &contentEncoding,
BlobContentLanguage: &contentLanguage,
BlobContentMD5: md5,
BlobCacheControl: &cacheControl,
}, tier)
default:
panic(fmt.Errorf("not implemented %v", resourceType))
}
case EServiceType.File():
switch resourceType {
case EResourceType.Bucket():
createShareOrDirectory(resourceURL)
case EResourceType.SingleFile():
createFile(
resourceURL,
blobSize,
getMetadata(metadata),
&sharefile.HTTPHeaders{
ContentType: &contentType,
ContentDisposition: &contentDisposition,
ContentEncoding: &contentEncoding,
ContentLanguage: &contentLanguage,
ContentMD5: md5,
CacheControl: &cacheControl,
})
default:
panic(fmt.Errorf("not implemented %v", resourceType))
}
case EServiceType.S3():
switch resourceType {
case EResourceType.Bucket():
createBucket(resourceURL)
case EResourceType.SingleFile():
// For S3, no content-MD5 will be returned during HEAD, i.e. no content-MD5 will be preserved during copy.
// And content-MD5 header is not set during upload. E.g. in S3 management portal, no property content-MD5 can be set.
// So here create object without content-MD5 as common practice.
createObject(
resourceURL,
blobSize,
minio.PutObjectOptions{
ContentType: contentType,
ContentDisposition: contentDisposition,
ContentEncoding: contentEncoding,
ContentLanguage: contentLanguage,
CacheControl: cacheControl,
UserMetadata: getS3Metadata(metadata),
})
default:
panic(fmt.Errorf("not implemented %v", resourceType))
}
case EServiceType.GCP():
switch resourceType {
case EResourceType.Bucket():
createGCPBucket(resourceURL)
case EResourceType.SingleFile():
createGCPObject(resourceURL, blobSize, gcpUtils.ObjectAttrsToUpdate{
ContentType: contentType,
ContentDisposition: contentDisposition,
ContentEncoding: contentEncoding,
ContentLanguage: contentLanguage,
CacheControl: cacheControl,
Metadata: getS3Metadata(metadata),
})
}
case EServiceType.BlobFS():
panic(fmt.Errorf("not implemented %v", serviceType))
default:
panic(fmt.Errorf("illegal resourceType %q", resourceType))
}
},
}
rootCmd.AddCommand(createCmd)
createCmd.PersistentFlags().StringVar(&serviceTypeStr, "serviceType", "Blob", "Service type, could be blob, file or blobFS currently.")
createCmd.PersistentFlags().StringVar(&resourceTypeStr, "resourceType", "SingleFile", "Resource type, could be a single file, bucket.")
createCmd.PersistentFlags().Uint32Var(&blobSize, "blob-size", 0, "")
createCmd.PersistentFlags().StringVar(&metadata, "metadata", "", "metadata for blob.")
createCmd.PersistentFlags().StringVar(&contentType, "content-type", "", "content type for blob.")
createCmd.PersistentFlags().StringVar(&contentEncoding, "content-encoding", "", "content encoding for blob.")
createCmd.PersistentFlags().StringVar(&contentDisposition, "content-disposition", "", "content disposition for blob.")
createCmd.PersistentFlags().StringVar(&contentLanguage, "content-language", "", "content language for blob.")
createCmd.PersistentFlags().StringVar(&cacheControl, "cache-control", "", "cache control for blob.")
createCmd.PersistentFlags().StringVar(&contentMD5, "content-md5", "", "content MD5 for blob.")
createCmd.PersistentFlags().StringVar(&location, "location", "", "Location of the Azure account or S3 bucket to create")
createCmd.PersistentFlags().BoolVar(&genMD5, "generate-md5", false, "auto-generate MD5 for a new blob")
}