github.com/sacloud/iaas-api-go@v1.12.0/internal/define/auto_backup.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 define
    16  
    17  import (
    18  	"github.com/sacloud/iaas-api-go/internal/define/names"
    19  	"github.com/sacloud/iaas-api-go/internal/define/ops"
    20  	"github.com/sacloud/iaas-api-go/internal/dsl"
    21  	"github.com/sacloud/iaas-api-go/internal/dsl/meta"
    22  	"github.com/sacloud/iaas-api-go/naked"
    23  )
    24  
    25  const (
    26  	autoBackupAPIName     = "AutoBackup"
    27  	autoBackupAPIPathName = "commonserviceitem"
    28  )
    29  
    30  var autoBackupAPI = &dsl.Resource{
    31  	Name:       autoBackupAPIName,
    32  	PathName:   autoBackupAPIPathName,
    33  	PathSuffix: dsl.CloudAPISuffix,
    34  	Operations: dsl.Operations{
    35  		// find
    36  		ops.FindCommonServiceItem(autoBackupAPIName, autoBackupNakedType, findParameter, autoBackupView),
    37  
    38  		// create
    39  		ops.CreateCommonServiceItem(autoBackupAPIName, autoBackupNakedType, autoBackupCreateParam, autoBackupView),
    40  
    41  		// read
    42  		ops.ReadCommonServiceItem(autoBackupAPIName, autoBackupNakedType, autoBackupView),
    43  
    44  		// update
    45  		ops.UpdateCommonServiceItem(autoBackupAPIName, autoBackupNakedType, autoBackupUpdateParam, autoBackupView),
    46  
    47  		// updateSettings
    48  		ops.UpdateCommonServiceItemSettings(autoBackupAPIName, autoBackupSettingsUpdateNakedType, autoBackupUpdateSettingsParam, autoBackupView),
    49  
    50  		// delete
    51  		ops.Delete(autoBackupAPIName),
    52  	},
    53  }
    54  
    55  var (
    56  	autoBackupNakedType               = meta.Static(naked.AutoBackup{})
    57  	autoBackupSettingsUpdateNakedType = meta.Static(naked.AutoBackupSettingsUpdate{})
    58  
    59  	autoBackupView = &dsl.Model{
    60  		Name:      autoBackupAPIName,
    61  		NakedType: autoBackupNakedType,
    62  		Fields: []*dsl.FieldDesc{
    63  			fields.ID(),
    64  			fields.Name(),
    65  			fields.Description(),
    66  			fields.Tags(),
    67  			fields.Availability(),
    68  			fields.IconID(),
    69  			fields.CreatedAt(),
    70  			fields.ModifiedAt(),
    71  
    72  			// settings
    73  			fields.AutoBackupBackupSpanWeekdays(),
    74  			fields.AutoBackupMaximumNumberOfArchives(),
    75  			fields.SettingsHash(),
    76  
    77  			// status
    78  			fields.AutoBackupDiskID(),
    79  			fields.AutoBackupAccountID(),
    80  			fields.AutoBackupZoneID(),
    81  			fields.AutoBackupZoneName(),
    82  		},
    83  	}
    84  
    85  	autoBackupCreateParam = &dsl.Model{
    86  		Name:      names.CreateParameterName(autoBackupAPIName),
    87  		NakedType: autoBackupNakedType,
    88  		ConstFields: []*dsl.ConstFieldDesc{
    89  			{
    90  				Name: "Class",
    91  				Type: meta.TypeString,
    92  				Tags: &dsl.FieldTags{
    93  					MapConv: "Provider.Class",
    94  				},
    95  				Value: `"autobackup"`,
    96  			},
    97  			{
    98  				Name: "BackupSpanType",
    99  				Type: meta.TypeBackupSpanType,
   100  				Tags: &dsl.FieldTags{
   101  					MapConv: "Settings.Autobackup.BackupSpanType",
   102  				},
   103  				Value: `types.BackupSpanTypes.Weekdays`,
   104  			},
   105  		},
   106  
   107  		Fields: []*dsl.FieldDesc{
   108  			// creation time only
   109  			fields.AutoBackupDiskID(),
   110  
   111  			// backup setting
   112  			fields.AutoBackupBackupSpanWeekdays(),
   113  			fields.AutoBackupMaximumNumberOfArchives(),
   114  
   115  			// common fields
   116  			fields.Name(),
   117  			fields.Description(),
   118  			fields.Tags(),
   119  			fields.IconID(),
   120  		},
   121  	}
   122  
   123  	autoBackupUpdateParam = &dsl.Model{
   124  		Name:      names.UpdateParameterName(autoBackupAPIName),
   125  		NakedType: autoBackupNakedType,
   126  		ConstFields: []*dsl.ConstFieldDesc{
   127  			{
   128  				Name: "BackupSpanType",
   129  				Type: meta.TypeBackupSpanType,
   130  				Tags: &dsl.FieldTags{
   131  					MapConv: "Settings.Autobackup.BackupSpanType",
   132  				},
   133  				Value: `types.BackupSpanTypes.Weekdays`,
   134  			},
   135  		},
   136  		Fields: []*dsl.FieldDesc{
   137  			// common fields
   138  			fields.Name(),
   139  			fields.Description(),
   140  			fields.Tags(),
   141  			fields.IconID(),
   142  
   143  			// backup setting
   144  			fields.AutoBackupBackupSpanWeekdays(),
   145  			fields.AutoBackupMaximumNumberOfArchives(),
   146  			// settings hash
   147  			fields.SettingsHash(),
   148  		},
   149  	}
   150  
   151  	autoBackupUpdateSettingsParam = &dsl.Model{
   152  		Name:      names.UpdateSettingsParameterName(autoBackupAPIName),
   153  		NakedType: autoBackupNakedType,
   154  		ConstFields: []*dsl.ConstFieldDesc{
   155  			{
   156  				Name: "BackupSpanType",
   157  				Type: meta.TypeBackupSpanType,
   158  				Tags: &dsl.FieldTags{
   159  					MapConv: "Settings.Autobackup.BackupSpanType",
   160  				},
   161  				Value: `types.BackupSpanTypes.Weekdays`,
   162  			},
   163  		},
   164  		Fields: []*dsl.FieldDesc{
   165  			// backup setting
   166  			fields.AutoBackupBackupSpanWeekdays(),
   167  			fields.AutoBackupMaximumNumberOfArchives(),
   168  			// settings hash
   169  			fields.SettingsHash(),
   170  		},
   171  	}
   172  )