diff --git a/pkg/baremetal/tasks/bm_register.go b/pkg/baremetal/tasks/bm_register.go index 0a88bc80cd..4a7c93dbd9 100644 --- a/pkg/baremetal/tasks/bm_register.go +++ b/pkg/baremetal/tasks/bm_register.go @@ -139,7 +139,7 @@ func (s *sBaremetalRegisterTask) CreateBaremetal() (string, error) { } params := jsonutils.NewDict() - params.Set("name", jsonutils.NewString("BM"+strings.Replace(s.accessNic.Mac.String(), ":", "", -1))) + params.Set("name", jsonutils.NewString(strings.Replace(s.accessNic.Mac.String(), ":", "", -1))) params.Set("access_mac", jsonutils.NewString(s.accessNic.Mac.String())) params.Set("host_type", jsonutils.NewString("baremetal")) params.Set("is_baremetal", jsonutils.JSONTrue) diff --git a/pkg/cloudcommon/db/namevalidator.go b/pkg/cloudcommon/db/namevalidator.go index bf28ebc41e..cc9addbdd0 100644 --- a/pkg/cloudcommon/db/namevalidator.go +++ b/pkg/cloudcommon/db/namevalidator.go @@ -126,3 +126,16 @@ func (manager *SDnsNameValidatorManager) ValidateName(name string) error { } return httperrors.NewInputParameterError("name starts with letter, and contains letter, number and - only") } + +var ( + hostNameREG = regexp.MustCompile(`^[a-z$][a-z0-9-${}.]*$`) +) + +type SHostNameValidatorManager struct{} + +func (manager *SHostNameValidatorManager) ValidateName(name string) error { + if hostNameREG.MatchString(name) { + return nil + } + return httperrors.NewInputParameterError("name starts with letter, and contains letter, number and - only") +} diff --git a/pkg/compute/models/hosts.go b/pkg/compute/models/hosts.go index a687b15bd7..1bb4c97d25 100644 --- a/pkg/compute/models/hosts.go +++ b/pkg/compute/models/hosts.go @@ -61,7 +61,7 @@ import ( type SHostManager struct { db.SEnabledStatusInfrasResourceBaseManager db.SExternalizedResourceBaseManager - db.SDnsNameValidatorManager + db.SHostNameValidatorManager SZoneResourceBaseManager SManagedResourceBaseManager }