in oss/lib/mb.go [216:274]
func (mc *MakeBucketCommand) RunCommand() error {
cloudURL, err := CloudURLFromString(mc.command.args[0], "")
if err != nil {
return err
}
if cloudURL.bucket == "" {
return fmt.Errorf("invalid cloud url: %s, miss bucket", mc.command.args[0])
}
if cloudURL.object != "" {
return fmt.Errorf("invalid cloud url: %s, object not empty, upload object please use \"cp\" command", mc.command.args[0])
}
client, err := mc.command.ossClient(cloudURL.bucket)
if err != nil {
return err
}
var op []oss.Option
mc.mcOption.ossMeta, _ = GetString(OptionMeta, mc.command.options)
if mc.mcOption.ossMeta != "" {
metas, err := mc.command.parseHeaders(mc.mcOption.ossMeta, false)
if err != nil {
return err
}
options, err := mc.command.getOSSOptions(headerOptionMap, metas)
if err != nil {
return err
}
op = append(op, options...)
}
if len(mc.command.args) >= 2 {
return mc.createBucketXmlFile(client, cloudURL.bucket, mc.command.args[1], op)
}
aclStr, _ := GetString(OptionACL, mc.command.options)
language, _ := GetString(OptionLanguage, mc.command.options)
language = strings.ToLower(language)
strRedundancy, _ := GetString(OptionRedundancyType, mc.command.options)
if aclStr != "" {
acl, err := mc.getACL(aclStr, language)
if err != nil {
return err
}
op = append(op, oss.ACL(acl))
}
if strRedundancy != "" {
if strings.ToUpper(strRedundancy) != string(oss.RedundancyLRS) && strings.ToUpper(strRedundancy) != string(oss.RedundancyZRS) {
return fmt.Errorf("--redundancy-type muse be %s or %s", string(oss.RedundancyLRS), string(oss.RedundancyZRS))
}
redundancyType := oss.DataRedundancyType(strings.ToUpper(strRedundancy))
op = append(op, oss.RedundancyType(redundancyType))
}
return mc.ossCreateBucketRetry(client, cloudURL.bucket, op...)
}