github.com/sacloud/iaas-api-go@v1.12.0/ostype/archive_ostype.go (about)

     1  // Copyright 2022-2023 The sacloud/iaas-api-go Authors
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  // Package ostype is define OS type of SakuraCloud public archive
    16  package ostype
    17  
    18  //go:generate stringer -type=ArchiveOSType
    19  
    20  // ArchiveOSType パブリックアーカイブOS種別
    21  type ArchiveOSType int
    22  
    23  const (
    24  	// Custom OS種別:カスタム
    25  	Custom ArchiveOSType = iota
    26  
    27  	// CentOS OS種別:CentOS
    28  	CentOS
    29  	// CentOS7 OS種別:CentOS7
    30  	CentOS7
    31  
    32  	// AlmaLinux OS種別: Alma Linux
    33  	AlmaLinux
    34  	// AlmaLinux9 OS種別: Alma Linux9
    35  	AlmaLinux9
    36  	// AlmaLinux8 OS種別: Alma Linux8
    37  	AlmaLinux8
    38  
    39  	// RockyLinux OS種別: Rocky Linux
    40  	RockyLinux
    41  	// RockyLinux9 OS種別: Rocky Linux9
    42  	RockyLinux9
    43  	// RockyLinux8 OS種別: Rocky Linux8
    44  	RockyLinux8
    45  
    46  	// MiracleLinux OS種別: MIRACLE LINUX
    47  	MiracleLinux
    48  	// MiracleLinux8 OS種別: MIRACLE LINUX8
    49  	MiracleLinux8
    50  	// MiracleLinux9 OS種別: MIRACLE LINUX8
    51  	MiracleLinux9
    52  
    53  	// Ubuntu OS種別:Ubuntu
    54  	Ubuntu
    55  	// Ubuntu2204 OS種別:Ubuntu(Jammy Jellyfish)
    56  	Ubuntu2204
    57  	// Ubuntu2004 OS種別:Ubuntu(Focal Fossa)
    58  	Ubuntu2004
    59  	// Ubuntu1804 OS種別:Ubuntu(Bionic)
    60  	Ubuntu1804
    61  
    62  	// Debian OS種別:Debian
    63  	Debian
    64  	// Debian10 OS種別:Debian10
    65  	Debian10
    66  	// Debian11 OS種別:Debian11
    67  	Debian11
    68  
    69  	// Kusanagi OS種別:Kusanagi(CentOS)
    70  	Kusanagi
    71  )
    72  
    73  // ArchiveOSTypes アーカイブ種別のリスト
    74  var ArchiveOSTypes = []ArchiveOSType{
    75  	CentOS,
    76  	CentOS7,
    77  	AlmaLinux,
    78  	AlmaLinux9,
    79  	AlmaLinux8,
    80  	RockyLinux,
    81  	RockyLinux9,
    82  	RockyLinux8,
    83  	MiracleLinux,
    84  	MiracleLinux8,
    85  	MiracleLinux9,
    86  	Ubuntu,
    87  	Ubuntu2204,
    88  	Ubuntu2004,
    89  	Ubuntu1804,
    90  	Debian,
    91  	Debian10,
    92  	Debian11,
    93  	Kusanagi,
    94  }
    95  
    96  // OSTypeShortNames OSTypeとして利用できる文字列のリスト
    97  var OSTypeShortNames = []string{
    98  	"centos", "centos7",
    99  	"almalinux", "almalinux9", "almalinux8",
   100  	"rockylinux", "rockylinux9", "rockylinux8",
   101  	"miracle", "miraclelinux", "miracle8", "miraclelinux8", "miracle9", "miraclelinux9",
   102  	"ubuntu", "ubuntu2204", "ubuntu2004", "ubuntu1804",
   103  	"debian", "debian10", "debian11",
   104  	"kusanagi",
   105  }
   106  
   107  // IsSupportDiskEdit ディスクの修正機能をフルサポートしているか(Windowsは一部サポートのためfalseを返す)
   108  func (o ArchiveOSType) IsSupportDiskEdit() bool {
   109  	switch o {
   110  	case CentOS, CentOS7,
   111  		AlmaLinux, AlmaLinux9, AlmaLinux8,
   112  		RockyLinux, RockyLinux9, RockyLinux8,
   113  		MiracleLinux, MiracleLinux8, MiracleLinux9,
   114  		Ubuntu, Ubuntu2204, Ubuntu2004, Ubuntu1804,
   115  		Debian, Debian10, Debian11,
   116  		Kusanagi:
   117  		return true
   118  	default:
   119  		return false
   120  	}
   121  }
   122  
   123  // StrToOSType 文字列からArchiveOSTypesへの変換
   124  func StrToOSType(osType string) ArchiveOSType {
   125  	switch osType {
   126  	case "centos":
   127  		return CentOS
   128  	case "centos7":
   129  		return CentOS7
   130  	case "almalinux":
   131  		return AlmaLinux
   132  	case "almalinux9":
   133  		return AlmaLinux9
   134  	case "almalinux8":
   135  		return AlmaLinux8
   136  	case "rockylinux":
   137  		return RockyLinux
   138  	case "rockylinux9":
   139  		return RockyLinux9
   140  	case "rockylinux8":
   141  		return RockyLinux8
   142  	case "miracle", "miraclelinux":
   143  		return MiracleLinux
   144  	case "miracle8", "miraclelinux8":
   145  		return MiracleLinux8
   146  	case "miracle9", "miraclelinux9":
   147  		return MiracleLinux9
   148  	case "ubuntu":
   149  		return Ubuntu
   150  	case "ubuntu2204":
   151  		return Ubuntu2204
   152  	case "ubuntu2004":
   153  		return Ubuntu2004
   154  	case "ubuntu1804":
   155  		return Ubuntu1804
   156  	case "debian":
   157  		return Debian
   158  	case "debian10":
   159  		return Debian10
   160  	case "debian11":
   161  		return Debian11
   162  	case "kusanagi":
   163  		return Kusanagi
   164  	default:
   165  		return Custom
   166  	}
   167  }