github.com/sacloud/iaas-api-go@v1.12.0/internal/define/local_router.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  	localRouterAPIName     = "LocalRouter"
    27  	localRouterAPIPathName = "commonserviceitem"
    28  )
    29  
    30  var localRouterAPI = &dsl.Resource{
    31  	Name:       localRouterAPIName,
    32  	PathName:   localRouterAPIPathName,
    33  	PathSuffix: dsl.CloudAPISuffix,
    34  	IsGlobal:   true,
    35  	Operations: dsl.Operations{
    36  		// find
    37  		ops.FindCommonServiceItem(localRouterAPIName, localRouterNakedType, findParameter, localRouterView),
    38  
    39  		// create
    40  		ops.CreateCommonServiceItem(localRouterAPIName, localRouterNakedType, localRouterCreateParam, localRouterView),
    41  
    42  		// read
    43  		ops.ReadCommonServiceItem(localRouterAPIName, localRouterNakedType, localRouterView),
    44  
    45  		// update
    46  		ops.UpdateCommonServiceItem(localRouterAPIName, localRouterNakedType, localRouterUpdateParam, localRouterView),
    47  		// updateSettings
    48  		ops.UpdateCommonServiceItemSettings(localRouterAPIName, localRouterUpdateSettingsNakedType, localRouterUpdateSettingsParam, localRouterView),
    49  
    50  		// delete
    51  		ops.Delete(localRouterAPIName),
    52  
    53  		// Health
    54  		ops.HealthStatus(localRouterAPIName, meta.Static(naked.LocalRouterHealth{}), localRouterHealth),
    55  
    56  		// Monitor
    57  		ops.MonitorChild(localRouterAPIName, "LocalRouter", "activity/localrouter",
    58  			monitorParameter, monitors.localRouterModel()),
    59  	},
    60  }
    61  
    62  var (
    63  	localRouterNakedType               = meta.Static(naked.LocalRouter{})
    64  	localRouterUpdateSettingsNakedType = meta.Static(naked.LocalRouterSettingsUpdate{})
    65  
    66  	localRouterView = &dsl.Model{
    67  		Name:      localRouterAPIName,
    68  		NakedType: localRouterNakedType,
    69  		Fields: []*dsl.FieldDesc{
    70  			fields.ID(),
    71  			fields.Name(),
    72  			fields.Description(),
    73  			fields.Tags(),
    74  			fields.Availability(),
    75  			fields.IconID(),
    76  			fields.CreatedAt(),
    77  			fields.ModifiedAt(),
    78  
    79  			// settings
    80  			fields.LocalRouterSwitch(),
    81  			fields.LocalRouterInterface(),
    82  			fields.LocalRouterPeers(),
    83  			fields.LocalRouterStaticRoutes(),
    84  			fields.SettingsHash(),
    85  
    86  			// status
    87  			fields.LocalRouterSecretKeys(),
    88  		},
    89  	}
    90  
    91  	localRouterCreateParam = &dsl.Model{
    92  		Name:      names.CreateParameterName(localRouterAPIName),
    93  		NakedType: localRouterNakedType,
    94  		ConstFields: []*dsl.ConstFieldDesc{
    95  			{
    96  				Name: "Class",
    97  				Type: meta.TypeString,
    98  				Tags: &dsl.FieldTags{
    99  					MapConv: "Provider.Class",
   100  				},
   101  				Value: `"localrouter"`,
   102  			},
   103  		},
   104  		Fields: []*dsl.FieldDesc{
   105  			// common fields
   106  			fields.Name(),
   107  			fields.Description(),
   108  			fields.Tags(),
   109  			fields.IconID(),
   110  		},
   111  	}
   112  
   113  	localRouterUpdateParam = &dsl.Model{
   114  		Name:      names.UpdateParameterName(localRouterAPIName),
   115  		NakedType: localRouterNakedType,
   116  		Fields: []*dsl.FieldDesc{
   117  			// settings
   118  			fields.LocalRouterSwitch(),
   119  			fields.LocalRouterInterface(),
   120  			fields.LocalRouterPeers(),
   121  			fields.LocalRouterStaticRoutes(),
   122  			// settings hash
   123  			fields.SettingsHash(),
   124  
   125  			// common fields
   126  			fields.Name(),
   127  			fields.Description(),
   128  			fields.Tags(),
   129  			fields.IconID(),
   130  		},
   131  	}
   132  
   133  	localRouterUpdateSettingsParam = &dsl.Model{
   134  		Name:      names.UpdateSettingsParameterName(localRouterAPIName),
   135  		NakedType: localRouterNakedType,
   136  		Fields: []*dsl.FieldDesc{
   137  			// settings
   138  			fields.LocalRouterSwitch(),
   139  			fields.LocalRouterInterface(),
   140  			fields.LocalRouterPeers(),
   141  			fields.LocalRouterStaticRoutes(),
   142  			// settings hash
   143  			fields.SettingsHash(),
   144  		},
   145  	}
   146  
   147  	localRouterHealth = &dsl.Model{
   148  		Name: "LocalRouterHealth",
   149  		Fields: []*dsl.FieldDesc{
   150  			{
   151  				Name: "Peers",
   152  				Type: &dsl.Model{
   153  					Name:    "LocalRouterHealthPeer",
   154  					IsArray: true,
   155  					Fields: []*dsl.FieldDesc{
   156  						fields.Def("ID", meta.TypeID),
   157  						fields.Def("Status", meta.TypeInstanceStatus),
   158  						fields.Def("Routes", meta.TypeStringSlice),
   159  					},
   160  				},
   161  				Tags: &dsl.FieldTags{
   162  					MapConv: "[]Peers,recursive",
   163  				},
   164  			},
   165  		},
   166  		NakedType: meta.Static(naked.LocalRouterHealth{}),
   167  	}
   168  )