in internal/onetime/hanadiskrestore/hanadiskrestore.go [204:247]
func (r *Restorer) validateParameters(os string, cp *ipb.CloudProperties) error {
if r.SkipDBSnapshotForChangeDiskType {
log.Logger.Debug("Skip DB Snapshot for Change Disk Type")
return nil
}
if os == "windows" {
return fmt.Errorf("disk snapshot restore is only supported on Linux systems")
}
// Checking if sufficient arguments are passed for either group snapshot or single snapshot.
// Only SID is required for restoring from groupSnapshot.
// DataDiskName and NewdiskNames are fetched and respectively created
// from individual snapshots mapped to groupSnapshot.
restoreFromGroupSnapshot := !(r.Sid == "" || r.GroupSnapshot == "")
restoreFromSingleSnapshot := !(r.Sid == "" || r.SourceSnapshot == "" || r.NewdiskName == "")
if restoreFromGroupSnapshot == true && restoreFromSingleSnapshot == true {
return fmt.Errorf("either source-snapshot or group-snapshot-name must be provided, not both. Usage: %s", r.Usage())
} else if restoreFromGroupSnapshot == false && restoreFromSingleSnapshot == false {
return fmt.Errorf("required arguments not passed. Usage: %s", r.Usage())
}
if len(r.NewdiskName) > 63 {
return fmt.Errorf("the new-disk-name is longer than 63 chars which is not supported, please provide a shorter name")
}
if len(r.NewDiskPrefix) > 61 {
return fmt.Errorf("the new-disk-prefix is longer than 61 chars which is not supported, please provide a shorter prefix")
}
if r.Project == "" {
r.Project = cp.GetProjectId()
}
if r.HanaSidAdm == "" {
r.HanaSidAdm = strings.ToLower(r.Sid) + "adm"
}
if restoreFromGroupSnapshot {
r.isGroupSnapshot = true
}
log.Logger.Debug("Parameter validation successful.")
log.Logger.Infof("List of parameters to be used: %+v", r)
return nil
}