in internal/onetime/hanadiskbackup/hanadiskbackup.go [553:595]
func (s *Snapshot) validateParameters(os string, cp *ipb.CloudProperties) error {
if s.SkipDBSnapshotForChangeDiskType {
log.Logger.Debug("Skipping parameter validation for change disk type workflow.")
return nil
}
switch {
case os == "windows":
return fmt.Errorf("disk snapshot is only supported on Linux systems")
case s.Sid == "":
return fmt.Errorf("%s", "required argument -sid not passed. Usage:"+s.Usage())
case s.HDBUserstoreKey == "":
switch {
case s.HanaDBUser == "":
return fmt.Errorf("%s", "either -hana-db-user or -hdbuserstore-key is required. Usage:"+s.Usage())
case s.Port == "" && s.InstanceID == "":
return fmt.Errorf("%s", "either -port and -instance-id, or -hdbuserstore-key is required. Usage:"+s.Usage())
case s.Password == "" && s.PasswordSecret == "":
return fmt.Errorf("%s", "either -password, -password-secret or -hdbuserstore-key is required. Usage:"+s.Usage())
}
}
if s.SnapshotType != "STANDARD" && s.SnapshotType != "ARCHIVE" {
return fmt.Errorf("invalid snapshot type, only STANDARD and ARCHIVE are supported")
}
if s.Project == "" {
s.Project = cp.GetProjectId()
}
if s.DiskZone == "" {
s.DiskZone = cp.GetZone()
}
if s.Description == "" {
s.Description = fmt.Sprintf("Snapshot created by Agent for SAP for HANA sid: %q", s.Sid)
}
s.Port = s.portValue()
if s.SnapshotName == "" && s.Disk != "" {
t := time.Now()
s.SnapshotName = fmt.Sprintf("snapshot-%s-%d%02d%02d-%02d%02d%02d",
s.Disk, t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second())
}
log.Logger.Debug("Parameter validation successful.")
return nil
}