github.com/sacloud/iaas-api-go@v1.12.0/internal/define/fields.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/dsl"
    19  	"github.com/sacloud/iaas-api-go/internal/dsl/meta"
    20  	"github.com/sacloud/iaas-api-go/naked"
    21  	"github.com/sacloud/iaas-api-go/types"
    22  )
    23  
    24  func mapConvTag(tag string) *dsl.FieldTags {
    25  	return &dsl.FieldTags{
    26  		MapConv: tag,
    27  	}
    28  }
    29  
    30  type fieldsDef struct{}
    31  
    32  var fields = &fieldsDef{}
    33  
    34  func (f *fieldsDef) Def(name string, t meta.Type, tag ...*dsl.FieldTags) *dsl.FieldDesc {
    35  	desc := &dsl.FieldDesc{
    36  		Name: name,
    37  		Type: t,
    38  	}
    39  	if len(tag) > 0 {
    40  		desc.Tags = tag[0]
    41  	}
    42  	return desc
    43  }
    44  
    45  func (f *fieldsDef) ID() *dsl.FieldDesc {
    46  	return &dsl.FieldDesc{
    47  		Name: "ID",
    48  		Type: meta.TypeID,
    49  		Methods: []*dsl.MethodDesc{
    50  			{
    51  				Name: "SetStringID",
    52  				Arguments: dsl.Arguments{
    53  					{
    54  						Name: "id",
    55  						Type: meta.TypeString,
    56  					},
    57  				},
    58  			},
    59  			{
    60  				Name:        "GetStringID",
    61  				ResultTypes: []meta.Type{meta.TypeString},
    62  			},
    63  			{
    64  				Name: "SetInt64ID",
    65  				Arguments: dsl.Arguments{
    66  					{
    67  						Name: "id",
    68  						Type: meta.TypeInt64,
    69  					},
    70  				},
    71  			},
    72  			{
    73  				Name:        "GetInt64ID",
    74  				ResultTypes: []meta.Type{meta.TypeInt64},
    75  			},
    76  		},
    77  	}
    78  }
    79  
    80  func (f *fieldsDef) Name() *dsl.FieldDesc {
    81  	return &dsl.FieldDesc{
    82  		Name: "Name",
    83  		Type: meta.TypeString,
    84  	}
    85  }
    86  
    87  func (f *fieldsDef) InterfaceDriver() *dsl.FieldDesc {
    88  	return &dsl.FieldDesc{
    89  		Name:         "InterfaceDriver",
    90  		Type:         meta.TypeInterfaceDriver,
    91  		DefaultValue: `types.InterfaceDrivers.VirtIO`,
    92  	}
    93  }
    94  
    95  func (f *fieldsDef) BridgeInfo() *dsl.FieldDesc {
    96  	return &dsl.FieldDesc{
    97  		Name: "BridgeInfo",
    98  		Type: models.bridgeInfoModel(),
    99  		Tags: &dsl.FieldTags{
   100  			MapConv: "Info.[]Switches,recursive",
   101  		},
   102  	}
   103  }
   104  
   105  func (f *fieldsDef) SwitchInZone() *dsl.FieldDesc {
   106  	return &dsl.FieldDesc{
   107  		Name: "SwitchInZone",
   108  		Type: models.switchInZoneModel(),
   109  	}
   110  }
   111  
   112  func (f *fieldsDef) DiskPlanID() *dsl.FieldDesc {
   113  	return &dsl.FieldDesc{
   114  		Name: "DiskPlanID",
   115  		Tags: &dsl.FieldTags{
   116  			MapConv: "Plan.ID",
   117  		},
   118  		Type: meta.TypeID,
   119  	}
   120  }
   121  
   122  func (f *fieldsDef) DiskPlanName() *dsl.FieldDesc {
   123  	return &dsl.FieldDesc{
   124  		Name: "DiskPlanName",
   125  		Tags: &dsl.FieldTags{
   126  			MapConv: "Plan.Name",
   127  		},
   128  		Type: meta.TypeString,
   129  	}
   130  }
   131  
   132  func (f *fieldsDef) DiskPlanStorageClass() *dsl.FieldDesc {
   133  	return &dsl.FieldDesc{
   134  		Name: "DiskPlanStorageClass",
   135  		Tags: &dsl.FieldTags{
   136  			MapConv: "Plan.StorageClass",
   137  		},
   138  		Type: meta.TypeString,
   139  	}
   140  }
   141  
   142  func (f *fieldsDef) CPU() *dsl.FieldDesc {
   143  	return &dsl.FieldDesc{
   144  		Name: "CPU",
   145  		Type: meta.TypeInt,
   146  	}
   147  }
   148  
   149  func (f *fieldsDef) GPU() *dsl.FieldDesc {
   150  	return &dsl.FieldDesc{
   151  		Name: "GPU",
   152  		Type: meta.TypeInt,
   153  	}
   154  }
   155  
   156  /*
   157  func (f *fieldsDef) ServerPlanCPU() *schema.FieldDesc {
   158  	return &schema.FieldDesc{
   159  		Name: "CPU",
   160  		Tags: &schema.FieldTags{
   161  			MapConv: "ServerPlan.CPU",
   162  		},
   163  		Type: meta.TypeInt,
   164  	}
   165  }
   166  */
   167  
   168  func (f *fieldsDef) MemoryMB() *dsl.FieldDesc {
   169  	return &dsl.FieldDesc{
   170  		Name: "MemoryMB",
   171  		Type: meta.TypeInt,
   172  		Methods: []*dsl.MethodDesc{
   173  			{
   174  				Name:        "GetMemoryGB",
   175  				ResultTypes: []meta.Type{meta.TypeInt},
   176  			},
   177  			{
   178  				Name: "SetMemoryGB",
   179  				Arguments: dsl.Arguments{
   180  					{
   181  						Name: "memory",
   182  						Type: meta.TypeInt,
   183  					},
   184  				},
   185  			},
   186  		},
   187  	}
   188  }
   189  
   190  func (f *fieldsDef) Generation() *dsl.FieldDesc {
   191  	return &dsl.FieldDesc{
   192  		Name: "ServerPlanGeneration",
   193  		Tags: &dsl.FieldTags{
   194  			JSON: "Generation,omitempty",
   195  		},
   196  		Type: meta.TypePlanGeneration,
   197  	}
   198  }
   199  
   200  func (f *fieldsDef) CPUModel() *dsl.FieldDesc {
   201  	return &dsl.FieldDesc{
   202  		Name: "ServerPlanCPUModel",
   203  		Tags: &dsl.FieldTags{
   204  			JSON: "CPUModel,omitempty",
   205  		},
   206  		Type: meta.TypeString,
   207  	}
   208  }
   209  
   210  func (f *fieldsDef) Commitment() *dsl.FieldDesc {
   211  	return &dsl.FieldDesc{
   212  		Name: "ServerPlanCommitment",
   213  		Tags: &dsl.FieldTags{
   214  			JSON: "Commitment,omitempty",
   215  		},
   216  		Type:         meta.TypeCommitment,
   217  		DefaultValue: "types.Commitments.Standard",
   218  	}
   219  }
   220  
   221  func (f *fieldsDef) ServerPlanID() *dsl.FieldDesc {
   222  	return &dsl.FieldDesc{
   223  		Name: "ServerPlanID",
   224  		Tags: &dsl.FieldTags{
   225  			MapConv: "ServerPlan.ID",
   226  		},
   227  		Type: meta.TypeID,
   228  	}
   229  }
   230  
   231  func (f *fieldsDef) ServerPlanName() *dsl.FieldDesc {
   232  	return &dsl.FieldDesc{
   233  		Name: "ServerPlanName",
   234  		Tags: &dsl.FieldTags{
   235  			MapConv: "ServerPlan.Name",
   236  		},
   237  		Type: meta.TypeString,
   238  	}
   239  }
   240  
   241  func (f *fieldsDef) ServerPlanCPU() *dsl.FieldDesc {
   242  	return &dsl.FieldDesc{
   243  		Name: "CPU",
   244  		Tags: &dsl.FieldTags{
   245  			MapConv: "ServerPlan.CPU",
   246  		},
   247  		Type: meta.TypeInt,
   248  	}
   249  }
   250  
   251  func (f *fieldsDef) ServerPlanMemoryMB() *dsl.FieldDesc {
   252  	return &dsl.FieldDesc{
   253  		Name: "MemoryMB",
   254  		Tags: &dsl.FieldTags{
   255  			MapConv: "ServerPlan.MemoryMB",
   256  		},
   257  		Type: meta.TypeInt,
   258  		Methods: []*dsl.MethodDesc{
   259  			{
   260  				Name:        "GetMemoryGB",
   261  				ResultTypes: []meta.Type{meta.TypeInt},
   262  			},
   263  		},
   264  	}
   265  }
   266  
   267  func (f *fieldsDef) ServerPlanGPU() *dsl.FieldDesc {
   268  	return &dsl.FieldDesc{
   269  		Name: "GPU",
   270  		Tags: &dsl.FieldTags{
   271  			MapConv: "ServerPlan.GPU",
   272  		},
   273  		Type: meta.TypeInt,
   274  	}
   275  }
   276  
   277  func (f *fieldsDef) ServerPlanGeneration() *dsl.FieldDesc {
   278  	return &dsl.FieldDesc{
   279  		Name: "ServerPlanGeneration",
   280  		Type: meta.TypePlanGeneration,
   281  		Tags: &dsl.FieldTags{
   282  			MapConv: "ServerPlan.Generation",
   283  		},
   284  	}
   285  }
   286  
   287  func (f *fieldsDef) ServerPlanCPUModel() *dsl.FieldDesc {
   288  	return &dsl.FieldDesc{
   289  		Name: "ServerPlanCPUModel",
   290  		Tags: &dsl.FieldTags{
   291  			MapConv: "ServerPlan.CPUModel",
   292  			JSON:    ",omitempty",
   293  		},
   294  		Type: meta.TypeString,
   295  	}
   296  }
   297  func (f *fieldsDef) ServerPlanCommitment() *dsl.FieldDesc {
   298  	return &dsl.FieldDesc{
   299  		Name: "ServerPlanCommitment",
   300  		Tags: &dsl.FieldTags{
   301  			MapConv: "ServerPlan.Commitment",
   302  			JSON:    ",omitempty",
   303  		},
   304  		Type:         meta.TypeCommitment,
   305  		DefaultValue: "types.Commitments.Standard",
   306  	}
   307  }
   308  
   309  func (f *fieldsDef) PlanID() *dsl.FieldDesc {
   310  	return &dsl.FieldDesc{
   311  		Name: "PlanID",
   312  		Tags: &dsl.FieldTags{
   313  			MapConv: "Plan.ID",
   314  		},
   315  		Type: meta.TypeID,
   316  	}
   317  }
   318  
   319  func (f *fieldsDef) PlanName() *dsl.FieldDesc {
   320  	return &dsl.FieldDesc{
   321  		Name: "PlanName",
   322  		Tags: &dsl.FieldTags{
   323  			MapConv: "Plan.Name",
   324  		},
   325  		Type: meta.TypeString,
   326  	}
   327  }
   328  
   329  func (f *fieldsDef) ServerConnectedSwitch() *dsl.FieldDesc {
   330  	return &dsl.FieldDesc{
   331  		Name: "ConnectedSwitches",
   332  		Type: &dsl.Model{
   333  			Name: "ConnectedSwitch",
   334  			Fields: []*dsl.FieldDesc{
   335  				fields.ID(),
   336  				fields.Scope(),
   337  			},
   338  			IsArray:   true,
   339  			NakedType: meta.Static(naked.ConnectedSwitch{}),
   340  		},
   341  		Tags: &dsl.FieldTags{
   342  			JSON:    ",omitempty",
   343  			MapConv: "[]ConnectedSwitches,recursive",
   344  		},
   345  	}
   346  }
   347  
   348  func (f *fieldsDef) IconURL() *dsl.FieldDesc {
   349  	return &dsl.FieldDesc{
   350  		Name: "URL",
   351  		Type: meta.TypeString,
   352  	}
   353  }
   354  
   355  func (f *fieldsDef) IconImage() *dsl.FieldDesc {
   356  	return &dsl.FieldDesc{
   357  		Name: "Image",
   358  		Type: meta.TypeString,
   359  	}
   360  }
   361  
   362  func (f *fieldsDef) PublicKey() *dsl.FieldDesc {
   363  	return &dsl.FieldDesc{
   364  		Name: "PublicKey",
   365  		Type: meta.TypeString,
   366  	}
   367  }
   368  
   369  func (f *fieldsDef) PrivateKey() *dsl.FieldDesc {
   370  	return &dsl.FieldDesc{
   371  		Name: "PrivateKey",
   372  		Type: meta.TypeString,
   373  	}
   374  }
   375  
   376  func (f *fieldsDef) Fingerprint() *dsl.FieldDesc {
   377  	return &dsl.FieldDesc{
   378  		Name: "Fingerprint",
   379  		Type: meta.TypeString,
   380  	}
   381  }
   382  
   383  func (f *fieldsDef) PassPhrase() *dsl.FieldDesc {
   384  	return &dsl.FieldDesc{
   385  		Name: "PassPhrase",
   386  		Type: meta.TypeString,
   387  	}
   388  }
   389  
   390  func (f *fieldsDef) SourceDiskID() *dsl.FieldDesc {
   391  	return &dsl.FieldDesc{
   392  		Name: "SourceDiskID",
   393  		Tags: &dsl.FieldTags{
   394  			MapConv: "SourceDisk.ID,omitempty",
   395  		},
   396  		Type: meta.TypeID,
   397  	}
   398  }
   399  
   400  func (f *fieldsDef) SourceDiskAvailability() *dsl.FieldDesc {
   401  	return &dsl.FieldDesc{
   402  		Name: "SourceDiskAvailability",
   403  		Tags: &dsl.FieldTags{
   404  			MapConv: "SourceDisk.Availability,omitempty",
   405  		},
   406  		Type: meta.TypeAvailability,
   407  	}
   408  }
   409  
   410  func (f *fieldsDef) SourceArchiveID() *dsl.FieldDesc {
   411  	return &dsl.FieldDesc{
   412  		Name: "SourceArchiveID",
   413  		Tags: &dsl.FieldTags{
   414  			MapConv: "SourceArchive.ID,omitempty",
   415  		},
   416  		Type: meta.TypeID,
   417  	}
   418  }
   419  
   420  func (f *fieldsDef) SourceArchiveAvailability() *dsl.FieldDesc {
   421  	return &dsl.FieldDesc{
   422  		Name: "SourceArchiveAvailability",
   423  		Tags: &dsl.FieldTags{
   424  			MapConv: "SourceArchive.Availability,omitempty",
   425  		},
   426  		Type: meta.TypeAvailability,
   427  	}
   428  }
   429  
   430  func (f *fieldsDef) OriginalArchiveID() *dsl.FieldDesc {
   431  	return &dsl.FieldDesc{
   432  		Name: "OriginalArchiveID",
   433  		Tags: &dsl.FieldTags{
   434  			MapConv: "OriginalArchive.ID,omitempty",
   435  		},
   436  		Type: meta.TypeID,
   437  	}
   438  }
   439  
   440  func (f *fieldsDef) BridgeID() *dsl.FieldDesc {
   441  	return &dsl.FieldDesc{
   442  		Name: "BridgeID",
   443  		Type: meta.TypeID,
   444  		Tags: &dsl.FieldTags{
   445  			MapConv: "Bridge.ID,omitempty",
   446  		},
   447  	}
   448  }
   449  
   450  func (f *fieldsDef) HybridConnectionID() *dsl.FieldDesc {
   451  	return &dsl.FieldDesc{
   452  		Name: "HybridConnectionID",
   453  		Type: meta.TypeID,
   454  		Tags: &dsl.FieldTags{
   455  			MapConv: "HybridConnection.ID,omitempty",
   456  		},
   457  	}
   458  }
   459  
   460  func (f *fieldsDef) SwitchID() *dsl.FieldDesc {
   461  	return &dsl.FieldDesc{
   462  		Name: "SwitchID",
   463  		Type: meta.TypeID,
   464  		Tags: &dsl.FieldTags{
   465  			MapConv: "Switch.ID,omitempty",
   466  		},
   467  	}
   468  }
   469  
   470  func (f *fieldsDef) SwitchScope() *dsl.FieldDesc {
   471  	return &dsl.FieldDesc{
   472  		Name: "SwitchScope",
   473  		Type: meta.TypeScope,
   474  		Tags: &dsl.FieldTags{
   475  			MapConv: "Switch.Scope,omitempty",
   476  		},
   477  	}
   478  }
   479  
   480  func (f *fieldsDef) PacketFilterID() *dsl.FieldDesc {
   481  	return &dsl.FieldDesc{
   482  		Name: "PacketFilterID",
   483  		Type: meta.TypeID,
   484  		Tags: &dsl.FieldTags{
   485  			MapConv: "PacketFilter.ID,omitempty",
   486  		},
   487  	}
   488  }
   489  
   490  func (f *fieldsDef) ServerID() *dsl.FieldDesc {
   491  	return &dsl.FieldDesc{
   492  		Name: "ServerID",
   493  		Tags: &dsl.FieldTags{
   494  			MapConv: "Server.ID,omitempty",
   495  		},
   496  		Type: meta.TypeID,
   497  	}
   498  }
   499  
   500  func (f *fieldsDef) ServerName() *dsl.FieldDesc {
   501  	return &dsl.FieldDesc{
   502  		Name: "ServerName",
   503  		Tags: &dsl.FieldTags{
   504  			MapConv: "Server.Name,omitempty",
   505  		},
   506  		Type: meta.TypeString,
   507  	}
   508  }
   509  
   510  func (f *fieldsDef) PrivateHostHostName() *dsl.FieldDesc {
   511  	return &dsl.FieldDesc{
   512  		Name: "HostName",
   513  		Type: meta.TypeString,
   514  		Tags: &dsl.FieldTags{
   515  			MapConv: "Host.Name",
   516  		},
   517  	}
   518  }
   519  
   520  func (f *fieldsDef) PrivateHostPlanID() *dsl.FieldDesc {
   521  	return &dsl.FieldDesc{
   522  		Name: "PlanID",
   523  		Tags: &dsl.FieldTags{
   524  			MapConv: "Plan.ID,omitempty",
   525  		},
   526  		Type: meta.TypeID,
   527  	}
   528  }
   529  
   530  func (f *fieldsDef) IconID() *dsl.FieldDesc {
   531  	return &dsl.FieldDesc{
   532  		Name: "IconID",
   533  		Tags: &dsl.FieldTags{
   534  			MapConv: "Icon.ID",
   535  		},
   536  		Type: meta.TypeID,
   537  	}
   538  }
   539  
   540  func (f *fieldsDef) LicenseInfoID() *dsl.FieldDesc {
   541  	return &dsl.FieldDesc{
   542  		Name: "LicenseInfoID",
   543  		Tags: &dsl.FieldTags{
   544  			MapConv: "LicenseInfo.ID",
   545  		},
   546  		Type: meta.TypeID,
   547  	}
   548  }
   549  
   550  func (f *fieldsDef) LicenseInfoName() *dsl.FieldDesc {
   551  	return &dsl.FieldDesc{
   552  		Name: "LicenseInfoName",
   553  		Tags: &dsl.FieldTags{
   554  			MapConv: "LicenseInfo.Name",
   555  		},
   556  		Type: meta.TypeString,
   557  	}
   558  }
   559  
   560  func (f *fieldsDef) ZoneID() *dsl.FieldDesc {
   561  	return &dsl.FieldDesc{
   562  		Name: "ZoneID",
   563  		Type: meta.TypeID,
   564  		Tags: &dsl.FieldTags{
   565  			MapConv: "Zone.ID",
   566  		},
   567  	}
   568  }
   569  
   570  func (f *fieldsDef) ZoneName() *dsl.FieldDesc {
   571  	return &dsl.FieldDesc{
   572  		Name: "ZoneName",
   573  		Type: meta.TypeString,
   574  		Tags: &dsl.FieldTags{
   575  			MapConv: "Zone.Name",
   576  		},
   577  	}
   578  }
   579  
   580  func (f *fieldsDef) CDROMID() *dsl.FieldDesc {
   581  	return &dsl.FieldDesc{
   582  		Name: "CDROMID",
   583  		Type: meta.TypeID,
   584  		Tags: &dsl.FieldTags{
   585  			MapConv: "Instance.CDROM.ID",
   586  		},
   587  	}
   588  }
   589  
   590  func (f *fieldsDef) PrivateHostID() *dsl.FieldDesc {
   591  	return &dsl.FieldDesc{
   592  		Name: "PrivateHostID",
   593  		Type: meta.TypeID,
   594  		Tags: &dsl.FieldTags{
   595  			MapConv: "PrivateHost.ID",
   596  		},
   597  	}
   598  }
   599  
   600  func (f *fieldsDef) PrivateHostName() *dsl.FieldDesc {
   601  	return &dsl.FieldDesc{
   602  		Name: "PrivateHostName",
   603  		Type: meta.TypeString,
   604  		Tags: &dsl.FieldTags{
   605  			MapConv: "PrivateHost.Name",
   606  		},
   607  	}
   608  }
   609  
   610  func (f *fieldsDef) AppliancePlanID() *dsl.FieldDesc {
   611  	return &dsl.FieldDesc{
   612  		Name: "PlanID",
   613  		Tags: &dsl.FieldTags{
   614  			MapConv: "Remark.Plan.ID/Plan.ID",
   615  		},
   616  		Type: meta.TypeID,
   617  	}
   618  }
   619  
   620  func (f *fieldsDef) ApplianceVPCRouterVersion() *dsl.FieldDesc {
   621  	return &dsl.FieldDesc{
   622  		Name: "Version",
   623  		Tags: &dsl.FieldTags{
   624  			MapConv: "Remark.Router.VPCRouterVersion",
   625  		},
   626  		Type:         meta.TypeInt,
   627  		DefaultValue: `2`,
   628  	}
   629  }
   630  
   631  func (f *fieldsDef) ApplianceSwitchID() *dsl.FieldDesc {
   632  	return &dsl.FieldDesc{
   633  		Name: "SwitchID",
   634  		Tags: &dsl.FieldTags{
   635  			MapConv: "Remark.Switch.ID",
   636  		},
   637  		Type: meta.TypeID,
   638  	}
   639  }
   640  
   641  func (f *fieldsDef) ApplianceIPAddress() *dsl.FieldDesc {
   642  	return &dsl.FieldDesc{
   643  		Name: "IPAddress",
   644  		Tags: &dsl.FieldTags{
   645  			MapConv: "Remark.[]Servers.IPAddress",
   646  		},
   647  		Type: meta.TypeString,
   648  	}
   649  }
   650  
   651  func (f *fieldsDef) ApplianceIPAddresses() *dsl.FieldDesc {
   652  	return &dsl.FieldDesc{
   653  		Name: "IPAddresses",
   654  		Type: meta.TypeStringSlice,
   655  		Tags: &dsl.FieldTags{
   656  			MapConv: "Remark.[]Servers.IPAddress",
   657  		},
   658  	}
   659  }
   660  
   661  func (f *fieldsDef) LoadBalancerVIPPort() *dsl.FieldDesc {
   662  	return &dsl.FieldDesc{
   663  		Name: "Port",
   664  		Type: meta.TypeStringNumber,
   665  	}
   666  }
   667  
   668  func (f *fieldsDef) LoadBalancerVIPDelayLoop() *dsl.FieldDesc {
   669  	return &dsl.FieldDesc{
   670  		Name: "DelayLoop",
   671  		Type: meta.TypeStringNumber,
   672  		Tags: &dsl.FieldTags{
   673  			MapConv: ",default=10",
   674  		},
   675  		DefaultValue: "10",
   676  	}
   677  }
   678  
   679  func (f *fieldsDef) LoadBalancerVIPSorryServer() *dsl.FieldDesc {
   680  	return &dsl.FieldDesc{
   681  		Name: "SorryServer",
   682  		Type: meta.TypeString,
   683  	}
   684  }
   685  
   686  func (f *fieldsDef) LoadBalancerServerIPAddress() *dsl.FieldDesc {
   687  	return &dsl.FieldDesc{
   688  		Name: "IPAddress",
   689  		Type: meta.TypeString,
   690  	}
   691  }
   692  func (f *fieldsDef) LoadBalancerServerPort() *dsl.FieldDesc {
   693  	return &dsl.FieldDesc{
   694  		Name: "Port",
   695  		Type: meta.TypeStringNumber,
   696  	}
   697  }
   698  func (f *fieldsDef) LoadBalancerServerEnabled() *dsl.FieldDesc {
   699  	return &dsl.FieldDesc{
   700  		Name: "Enabled",
   701  		Type: meta.TypeStringFlag,
   702  	}
   703  }
   704  func (f *fieldsDef) LoadBalancerServerHealthCheck() *dsl.FieldDesc {
   705  	return &dsl.FieldDesc{
   706  		Name: "HealthCheck",
   707  		Type: &dsl.Model{
   708  			Name: "LoadBalancerServerHealthCheck",
   709  			Fields: []*dsl.FieldDesc{
   710  				{
   711  					Name: "Protocol",
   712  					Type: meta.Static(types.ELoadBalancerHealthCheckProtocol("")),
   713  				},
   714  				{
   715  					Name: "Path",
   716  					Type: meta.TypeString,
   717  				},
   718  				{
   719  					Name: "ResponseCode",
   720  					Type: meta.TypeStringNumber,
   721  					Tags: &dsl.FieldTags{
   722  						MapConv: "Status",
   723  					},
   724  				},
   725  				{Name: "Retry", Type: meta.TypeStringNumber},
   726  				{Name: "ConnectTimeout", Type: meta.TypeStringNumber},
   727  			},
   728  		},
   729  		Tags: &dsl.FieldTags{
   730  			MapConv: "HealthCheck,recursive",
   731  		},
   732  	}
   733  }
   734  
   735  func (f *fieldsDef) LoadBalancerVIPServers() *dsl.FieldDesc {
   736  	return &dsl.FieldDesc{
   737  		Name: "Servers",
   738  		Type: &dsl.Model{
   739  			Name:  "LoadBalancerServer",
   740  			Alias: "LoadBalancerServers",
   741  			Fields: []*dsl.FieldDesc{
   742  				f.LoadBalancerServerIPAddress(),
   743  				f.LoadBalancerServerPort(),
   744  				f.LoadBalancerServerEnabled(),
   745  				f.LoadBalancerServerHealthCheck(),
   746  			},
   747  		},
   748  		Tags: &dsl.FieldTags{
   749  			MapConv: "[]Servers,recursive",
   750  		},
   751  	}
   752  }
   753  
   754  func (f *fieldsDef) LoadBalancerVIPVirtualIPAddress() *dsl.FieldDesc {
   755  	return &dsl.FieldDesc{
   756  		Name: "VirtualIPAddress",
   757  		Type: meta.TypeString,
   758  	}
   759  }
   760  
   761  func (f *fieldsDef) LoadBalancerVIP() *dsl.FieldDesc {
   762  	return &dsl.FieldDesc{
   763  		Name: "VirtualIPAddresses",
   764  		Type: &dsl.Model{
   765  			Name:  "LoadBalancerVirtualIPAddress",
   766  			Alias: "LoadBalancerVirtualIPAddresses",
   767  			Fields: []*dsl.FieldDesc{
   768  				f.LoadBalancerVIPVirtualIPAddress(),
   769  				f.LoadBalancerVIPPort(),
   770  				f.LoadBalancerVIPDelayLoop(),
   771  				f.LoadBalancerVIPSorryServer(),
   772  				f.Description(),
   773  				f.LoadBalancerVIPServers(),
   774  			},
   775  		},
   776  		Tags: &dsl.FieldTags{
   777  			MapConv: "Settings.[]LoadBalancer,recursive",
   778  		},
   779  	}
   780  }
   781  
   782  func (f *fieldsDef) Tags() *dsl.FieldDesc {
   783  	return &dsl.FieldDesc{
   784  		Name: "Tags",
   785  		Type: meta.Static(types.Tags{}),
   786  		Methods: []*dsl.MethodDesc{
   787  			{
   788  				Name:        "HasTag",
   789  				Description: "指定のタグが存在する場合trueを返す",
   790  				Arguments: dsl.Arguments{
   791  					{
   792  						Name: "tag",
   793  						Type: meta.TypeString,
   794  					},
   795  				},
   796  				ResultTypes: []meta.Type{meta.TypeFlag},
   797  			},
   798  			{
   799  				Name:        "AppendTag",
   800  				Description: "指定のタグを追加",
   801  				Arguments: dsl.Arguments{
   802  					{
   803  						Name: "tag",
   804  						Type: meta.TypeString,
   805  					},
   806  				},
   807  			},
   808  			{
   809  				Name:        "RemoveTag",
   810  				Description: "指定のタグを削除",
   811  				Arguments: dsl.Arguments{
   812  					{
   813  						Name: "tag",
   814  						Type: meta.TypeString,
   815  					},
   816  				},
   817  			},
   818  			{
   819  				Name:        "ClearTags",
   820  				Description: "タグを全クリア",
   821  			},
   822  		},
   823  	}
   824  }
   825  
   826  func (f *fieldsDef) Class() *dsl.FieldDesc {
   827  	return &dsl.FieldDesc{
   828  		Name: "Class",
   829  		Type: meta.TypeString,
   830  	}
   831  }
   832  
   833  func (f *fieldsDef) SIMICCID() *dsl.FieldDesc {
   834  	return &dsl.FieldDesc{
   835  		Name: "ICCID",
   836  		Type: meta.TypeString,
   837  		Tags: &dsl.FieldTags{
   838  			MapConv: "Status.ICCID",
   839  		},
   840  	}
   841  }
   842  
   843  func (f *fieldsDef) SIMPassCode() *dsl.FieldDesc {
   844  	return &dsl.FieldDesc{
   845  		Name: "PassCode",
   846  		Type: meta.TypeString,
   847  		Tags: &dsl.FieldTags{
   848  			MapConv: "Remark.PassCode",
   849  		},
   850  	}
   851  }
   852  
   853  func (f *fieldsDef) GSLBFQDN() *dsl.FieldDesc {
   854  	return &dsl.FieldDesc{
   855  		Name: "FQDN",
   856  		Type: meta.TypeString,
   857  		Tags: &dsl.FieldTags{
   858  			MapConv: "Status.FQDN",
   859  		},
   860  	}
   861  }
   862  
   863  func (f *fieldsDef) GSLBHealthCheck() *dsl.FieldDesc {
   864  	return &dsl.FieldDesc{
   865  		Name: "HealthCheck",
   866  		Type: &dsl.Model{
   867  			Name:      "GSLBHealthCheck",
   868  			NakedType: meta.Static(naked.GSLBHealthCheck{}),
   869  			Fields: []*dsl.FieldDesc{
   870  				{
   871  					Name: "Protocol",
   872  					Type: meta.Static(types.EGSLBHealthCheckProtocol("")),
   873  				},
   874  				{
   875  					Name: "HostHeader",
   876  					Type: meta.TypeString,
   877  					Tags: &dsl.FieldTags{
   878  						MapConv: "Host",
   879  					},
   880  				},
   881  				{
   882  					Name: "Path",
   883  					Type: meta.TypeString,
   884  					Tags: &dsl.FieldTags{
   885  						MapConv: "Path",
   886  					},
   887  				},
   888  				{
   889  					Name: "ResponseCode",
   890  					Type: meta.TypeStringNumber,
   891  					Tags: &dsl.FieldTags{
   892  						MapConv: "Status",
   893  					},
   894  				},
   895  				{
   896  					Name: "Port",
   897  					Type: meta.TypeStringNumber,
   898  					Tags: &dsl.FieldTags{
   899  						MapConv: "Port",
   900  					},
   901  				},
   902  			},
   903  		},
   904  		Tags: &dsl.FieldTags{
   905  			MapConv: "Settings.GSLB.HealthCheck,recursive",
   906  		},
   907  	}
   908  }
   909  
   910  func (f *fieldsDef) GSLBDelayLoop() *dsl.FieldDesc {
   911  	return &dsl.FieldDesc{
   912  		Name: "DelayLoop",
   913  		Type: meta.TypeInt,
   914  		Tags: &dsl.FieldTags{
   915  			MapConv: "Settings.GSLB.DelayLoop",
   916  		},
   917  		DefaultValue: "10",
   918  	}
   919  }
   920  
   921  func (f *fieldsDef) GSLBWeighted() *dsl.FieldDesc {
   922  	return &dsl.FieldDesc{
   923  		Name: "Weighted",
   924  		Type: meta.TypeStringFlag,
   925  		Tags: &dsl.FieldTags{
   926  			MapConv: "Settings.GSLB.Weighted",
   927  		},
   928  	}
   929  }
   930  
   931  func (f *fieldsDef) GSLBDestinationServers() *dsl.FieldDesc {
   932  	return &dsl.FieldDesc{
   933  		Name: "DestinationServers",
   934  		Type: &dsl.Model{
   935  			Name:  "GSLBServer",
   936  			Alias: "GSLBServers",
   937  			Fields: []*dsl.FieldDesc{
   938  				{
   939  					Name: "IPAddress",
   940  					Type: meta.TypeString,
   941  				},
   942  				{
   943  					Name: "Enabled",
   944  					Type: meta.TypeStringFlag,
   945  				},
   946  				{
   947  					Name: "Weight",
   948  					Type: meta.TypeStringNumber,
   949  				},
   950  			},
   951  		},
   952  		Tags: &dsl.FieldTags{
   953  			MapConv: "Settings.GSLB.[]Servers,recursive",
   954  		},
   955  	}
   956  }
   957  
   958  func (f *fieldsDef) GSLBSorryServer() *dsl.FieldDesc {
   959  	return &dsl.FieldDesc{
   960  		Name: "SorryServer",
   961  		Type: meta.TypeString,
   962  		Tags: &dsl.FieldTags{
   963  			MapConv: "Settings.GSLB.SorryServer",
   964  		},
   965  	}
   966  }
   967  
   968  func (f *fieldsDef) AutoBackupBackupSpanWeekdays() *dsl.FieldDesc {
   969  	return &dsl.FieldDesc{
   970  		Name: "BackupSpanWeekdays",
   971  		Type: meta.TypeBackupSpanWeekdays,
   972  		Tags: &dsl.FieldTags{
   973  			MapConv: "Settings.Autobackup.BackupSpanWeekdays",
   974  		},
   975  	}
   976  }
   977  
   978  func (f *fieldsDef) AutoBackupMaximumNumberOfArchives() *dsl.FieldDesc {
   979  	return &dsl.FieldDesc{
   980  		Name: "MaximumNumberOfArchives",
   981  		Type: meta.TypeInt,
   982  		Tags: &dsl.FieldTags{
   983  			MapConv: "Settings.Autobackup.MaximumNumberOfArchives",
   984  		},
   985  	}
   986  }
   987  
   988  func (f *fieldsDef) AutoBackupDiskID() *dsl.FieldDesc {
   989  	return &dsl.FieldDesc{
   990  		Name: "DiskID",
   991  		Type: meta.TypeID,
   992  		Tags: &dsl.FieldTags{
   993  			MapConv: "Status.DiskID",
   994  		},
   995  	}
   996  }
   997  
   998  func (f *fieldsDef) AutoBackupAccountID() *dsl.FieldDesc {
   999  	return &dsl.FieldDesc{
  1000  		Name: "AccountID",
  1001  		Type: meta.TypeID,
  1002  		Tags: &dsl.FieldTags{
  1003  			MapConv: "Status.AccountID",
  1004  		},
  1005  	}
  1006  }
  1007  
  1008  func (f *fieldsDef) AutoBackupZoneID() *dsl.FieldDesc {
  1009  	return &dsl.FieldDesc{
  1010  		Name: "ZoneID",
  1011  		Type: meta.TypeID,
  1012  		Tags: &dsl.FieldTags{
  1013  			MapConv: "Status.ZoneID",
  1014  		},
  1015  	}
  1016  }
  1017  
  1018  func (f *fieldsDef) AutoBackupZoneName() *dsl.FieldDesc {
  1019  	return &dsl.FieldDesc{
  1020  		Name: "ZoneName",
  1021  		Type: meta.TypeString,
  1022  		Tags: &dsl.FieldTags{
  1023  			MapConv: "Status.ZoneName",
  1024  		},
  1025  	}
  1026  }
  1027  
  1028  func (f *fieldsDef) DNSRecords() *dsl.FieldDesc {
  1029  	return &dsl.FieldDesc{
  1030  		Name: "Records",
  1031  		Type: &dsl.Model{
  1032  			Name:  "DNSRecord",
  1033  			Alias: "DNSRecords",
  1034  			Fields: []*dsl.FieldDesc{
  1035  				{
  1036  					Name: "Name",
  1037  					Type: meta.TypeString,
  1038  				},
  1039  				{
  1040  					Name: "Type",
  1041  					Type: meta.TypeDNSRecordType,
  1042  				},
  1043  				{
  1044  					Name: "RData",
  1045  					Type: meta.TypeString,
  1046  				},
  1047  				{
  1048  					Name: "TTL",
  1049  					Type: meta.TypeInt,
  1050  				},
  1051  			},
  1052  		},
  1053  		Tags: &dsl.FieldTags{
  1054  			MapConv: "Settings.DNS.[]ResourceRecordSets,recursive",
  1055  		},
  1056  	}
  1057  }
  1058  
  1059  func (f *fieldsDef) DNSZone() *dsl.FieldDesc {
  1060  	return &dsl.FieldDesc{
  1061  		Name: "DNSZone",
  1062  		Type: meta.TypeString,
  1063  		Tags: &dsl.FieldTags{
  1064  			MapConv: "Status.Zone",
  1065  		},
  1066  	}
  1067  }
  1068  
  1069  func (f *fieldsDef) DNSNameServers() *dsl.FieldDesc {
  1070  	return &dsl.FieldDesc{
  1071  		Name: "DNSNameServers",
  1072  		Type: meta.TypeStringSlice,
  1073  		Tags: &dsl.FieldTags{
  1074  			MapConv: "Status.NS",
  1075  		},
  1076  	}
  1077  }
  1078  
  1079  func (f *fieldsDef) CAStatusCountry() *dsl.FieldDesc {
  1080  	return &dsl.FieldDesc{
  1081  		Name: "Country",
  1082  		Type: meta.TypeString,
  1083  		Tags: &dsl.FieldTags{
  1084  			MapConv: "Status.Country",
  1085  		},
  1086  	}
  1087  }
  1088  
  1089  func (f *fieldsDef) CAStatusOrganization() *dsl.FieldDesc {
  1090  	return &dsl.FieldDesc{
  1091  		Name: "Organization",
  1092  		Type: meta.TypeString,
  1093  		Tags: &dsl.FieldTags{
  1094  			MapConv: "Status.Organization",
  1095  		},
  1096  	}
  1097  }
  1098  
  1099  func (f *fieldsDef) CAStatusOrganizationUnit() *dsl.FieldDesc {
  1100  	return &dsl.FieldDesc{
  1101  		Name: "OrganizationUnit",
  1102  		Type: meta.TypeStringSlice,
  1103  		Tags: &dsl.FieldTags{
  1104  			MapConv: "Status.OrganizationUnit",
  1105  		},
  1106  	}
  1107  }
  1108  
  1109  func (f *fieldsDef) CAStatusCommonName() *dsl.FieldDesc {
  1110  	return &dsl.FieldDesc{
  1111  		Name: "CommonName",
  1112  		Type: meta.TypeString,
  1113  		Tags: &dsl.FieldTags{
  1114  			MapConv: "Status.CommonName",
  1115  		},
  1116  	}
  1117  }
  1118  func (f *fieldsDef) CAStatusNotAfter() *dsl.FieldDesc {
  1119  	return &dsl.FieldDesc{
  1120  		Name: "NotAfter",
  1121  		Type: meta.TypeTime,
  1122  		Tags: &dsl.FieldTags{
  1123  			MapConv: "Status.NotAfter",
  1124  		},
  1125  	}
  1126  }
  1127  
  1128  func (f *fieldsDef) CAStatusSubject() *dsl.FieldDesc {
  1129  	return &dsl.FieldDesc{
  1130  		Name: "Subject",
  1131  		Type: meta.TypeString,
  1132  		Tags: &dsl.FieldTags{
  1133  			MapConv: "Status.Subject",
  1134  		},
  1135  	}
  1136  }
  1137  
  1138  func (f *fieldsDef) SimpleMonitorTarget() *dsl.FieldDesc {
  1139  	return &dsl.FieldDesc{
  1140  		Name: "Target",
  1141  		Type: meta.TypeString,
  1142  		Tags: &dsl.FieldTags{
  1143  			MapConv: "Status.Target",
  1144  		},
  1145  	}
  1146  }
  1147  
  1148  func (f *fieldsDef) SimpleMonitorMaxCheckAttempts() *dsl.FieldDesc {
  1149  	return &dsl.FieldDesc{
  1150  		Name: "MaxCheckAttempts",
  1151  		Type: meta.TypeInt,
  1152  		Tags: &dsl.FieldTags{
  1153  			MapConv: "Settings.SimpleMonitor.MaxCheckAttempts",
  1154  		},
  1155  		DefaultValue: "3",
  1156  	}
  1157  }
  1158  
  1159  func (f *fieldsDef) SimpleMonitorRetryInterval() *dsl.FieldDesc {
  1160  	return &dsl.FieldDesc{
  1161  		Name: "RetryInterval",
  1162  		Type: meta.TypeInt,
  1163  		Tags: &dsl.FieldTags{
  1164  			MapConv: "Settings.SimpleMonitor.RetryInterval",
  1165  		},
  1166  		DefaultValue: "10",
  1167  	}
  1168  }
  1169  
  1170  func (f *fieldsDef) SimpleMonitorDelayLoop() *dsl.FieldDesc {
  1171  	return &dsl.FieldDesc{
  1172  		Name: "DelayLoop",
  1173  		Type: meta.TypeInt,
  1174  		Tags: &dsl.FieldTags{
  1175  			MapConv: "Settings.SimpleMonitor.DelayLoop",
  1176  		},
  1177  		DefaultValue: "60",
  1178  	}
  1179  }
  1180  
  1181  func (f *fieldsDef) SimpleMonitorNotifyInterval() *dsl.FieldDesc {
  1182  	return &dsl.FieldDesc{
  1183  		Name: "NotifyInterval",
  1184  		Type: meta.TypeInt,
  1185  		Tags: &dsl.FieldTags{
  1186  			MapConv: "Settings.SimpleMonitor.NotifyInterval",
  1187  		},
  1188  		DefaultValue: "7200",
  1189  	}
  1190  }
  1191  
  1192  func (f *fieldsDef) SimpleMonitorTimeout() *dsl.FieldDesc {
  1193  	return &dsl.FieldDesc{
  1194  		Name: "Timeout",
  1195  		Type: meta.TypeInt,
  1196  		Tags: &dsl.FieldTags{
  1197  			MapConv: "Settings.SimpleMonitor.Timeout",
  1198  		},
  1199  	}
  1200  }
  1201  
  1202  func (f *fieldsDef) SimpleMonitorEnabled() *dsl.FieldDesc {
  1203  	return &dsl.FieldDesc{
  1204  		Name: "Enabled",
  1205  		Type: meta.TypeStringFlag,
  1206  		Tags: &dsl.FieldTags{
  1207  			MapConv: "Settings.SimpleMonitor.Enabled",
  1208  		},
  1209  	}
  1210  }
  1211  
  1212  func (f *fieldsDef) SimpleMonitorNotifyEmailEnabled() *dsl.FieldDesc {
  1213  	return &dsl.FieldDesc{
  1214  		Name: "NotifyEmailEnabled",
  1215  		Type: meta.TypeStringFlag,
  1216  		Tags: &dsl.FieldTags{
  1217  			MapConv: "Settings.SimpleMonitor.NotifyEmail.Enabled",
  1218  		},
  1219  	}
  1220  }
  1221  
  1222  func (f *fieldsDef) SimpleMonitorNotifyEmailHTML() *dsl.FieldDesc {
  1223  	return &dsl.FieldDesc{
  1224  		Name: "NotifyEmailHTML",
  1225  		Type: meta.TypeStringFlag,
  1226  		Tags: &dsl.FieldTags{
  1227  			MapConv: "Settings.SimpleMonitor.NotifyEmail.HTML",
  1228  		},
  1229  	}
  1230  }
  1231  
  1232  func (f *fieldsDef) SimpleMonitorNotifySlackEnabled() *dsl.FieldDesc {
  1233  	return &dsl.FieldDesc{
  1234  		Name: "NotifySlackEnabled",
  1235  		Type: meta.TypeStringFlag,
  1236  		Tags: &dsl.FieldTags{
  1237  			MapConv: "Settings.SimpleMonitor.NotifySlack.Enabled",
  1238  		},
  1239  	}
  1240  }
  1241  
  1242  func (f *fieldsDef) SimpleMonitorSlackWebhooksURL() *dsl.FieldDesc {
  1243  	return &dsl.FieldDesc{
  1244  		Name: "SlackWebhooksURL",
  1245  		Type: meta.TypeString,
  1246  		Tags: &dsl.FieldTags{
  1247  			MapConv: "Settings.SimpleMonitor.NotifySlack.IncomingWebhooksURL",
  1248  		},
  1249  	}
  1250  }
  1251  
  1252  func (f *fieldsDef) SimpleMonitorHealthCheck() *dsl.FieldDesc {
  1253  	return &dsl.FieldDesc{
  1254  		Name: "HealthCheck",
  1255  		Type: &dsl.Model{
  1256  			Name: "SimpleMonitorHealthCheck",
  1257  			Fields: []*dsl.FieldDesc{
  1258  				{
  1259  					Name: "Protocol",
  1260  					Type: meta.TypeSimpleMonitorHealthCheckProtocol,
  1261  				},
  1262  				{
  1263  					Name: "Port",
  1264  					Type: meta.TypeStringNumber,
  1265  				},
  1266  				{
  1267  					Name: "Path",
  1268  					Type: meta.TypeString,
  1269  				},
  1270  				{
  1271  					Name: "Status",
  1272  					Type: meta.TypeStringNumber,
  1273  				},
  1274  				{
  1275  					Name: "SNI",
  1276  					Type: meta.TypeStringFlag,
  1277  				},
  1278  				{
  1279  					Name: "Host",
  1280  					Type: meta.TypeString,
  1281  				},
  1282  				{
  1283  					Name: "BasicAuthUsername",
  1284  					Type: meta.TypeString,
  1285  				},
  1286  				{
  1287  					Name: "BasicAuthPassword",
  1288  					Type: meta.TypeString,
  1289  				},
  1290  				{
  1291  					Name: "ContainsString",
  1292  					Type: meta.TypeString,
  1293  				},
  1294  				{
  1295  					Name: "QName",
  1296  					Type: meta.TypeString,
  1297  				},
  1298  				{
  1299  					Name: "ExpectedData",
  1300  					Type: meta.TypeString,
  1301  				},
  1302  				{
  1303  					Name: "Community",
  1304  					Type: meta.TypeString,
  1305  				},
  1306  				{
  1307  					Name: "SNMPVersion",
  1308  					Type: meta.TypeString,
  1309  				},
  1310  				{
  1311  					Name: "OID",
  1312  					Type: meta.TypeString,
  1313  				},
  1314  				{
  1315  					Name: "RemainingDays",
  1316  					Type: meta.TypeInt,
  1317  				},
  1318  				{
  1319  					Name: "HTTP2",
  1320  					Type: meta.TypeStringFlag,
  1321  				},
  1322  				{
  1323  					Name: "FTPS",
  1324  					Type: meta.Static(types.ESimpleMonitorFTPS("")),
  1325  				},
  1326  				{
  1327  					Name: "VerifySNI",
  1328  					Type: meta.TypeStringFlag,
  1329  				},
  1330  			},
  1331  		},
  1332  		Tags: &dsl.FieldTags{
  1333  			MapConv: "Settings.SimpleMonitor.HealthCheck,recursive",
  1334  		},
  1335  	}
  1336  }
  1337  
  1338  func (f *fieldsDef) ProxyLBPlan() *dsl.FieldDesc {
  1339  	return &dsl.FieldDesc{
  1340  		Name: "Plan",
  1341  		Type: meta.Static(types.EProxyLBPlan(0)),
  1342  	}
  1343  }
  1344  
  1345  func (f *fieldsDef) ProxyLBUseVIPFailover() *dsl.FieldDesc {
  1346  	return &dsl.FieldDesc{
  1347  		Name: "UseVIPFailover",
  1348  		Type: meta.TypeFlag,
  1349  		Tags: &dsl.FieldTags{
  1350  			MapConv: "Status.UseVIPFailover",
  1351  		},
  1352  	}
  1353  }
  1354  
  1355  func (f *fieldsDef) ProxyLBRegion() *dsl.FieldDesc {
  1356  	return &dsl.FieldDesc{
  1357  		Name: "Region",
  1358  		Type: meta.Static(types.EProxyLBRegion("")),
  1359  		Tags: &dsl.FieldTags{
  1360  			MapConv: "Status.Region",
  1361  		},
  1362  	}
  1363  }
  1364  
  1365  func (f *fieldsDef) ProxyLBProxyNetworks() *dsl.FieldDesc {
  1366  	return &dsl.FieldDesc{
  1367  		Name: "ProxyNetworks",
  1368  		Type: meta.TypeStringSlice,
  1369  		Tags: &dsl.FieldTags{
  1370  			MapConv: "Status.ProxyNetworks",
  1371  		},
  1372  	}
  1373  }
  1374  
  1375  func (f *fieldsDef) ProxyLBFQDN() *dsl.FieldDesc {
  1376  	return &dsl.FieldDesc{
  1377  		Name: "FQDN",
  1378  		Type: meta.TypeString,
  1379  		Tags: &dsl.FieldTags{
  1380  			MapConv: "Status.FQDN",
  1381  		},
  1382  	}
  1383  }
  1384  
  1385  func (f *fieldsDef) ProxyLBVIP() *dsl.FieldDesc {
  1386  	return &dsl.FieldDesc{
  1387  		Name: "VirtualIPAddress",
  1388  		Type: meta.TypeString,
  1389  		Tags: &dsl.FieldTags{
  1390  			MapConv: "Status.VirtualIPAddress",
  1391  		},
  1392  	}
  1393  }
  1394  
  1395  func (f *fieldsDef) ProxyLBHealthCheck() *dsl.FieldDesc {
  1396  	return &dsl.FieldDesc{
  1397  		Name: "HealthCheck",
  1398  		Type: &dsl.Model{
  1399  			Name: "ProxyLBHealthCheck",
  1400  			Fields: []*dsl.FieldDesc{
  1401  				{
  1402  					Name: "Protocol",
  1403  					Type: meta.Static(types.EProxyLBHealthCheckProtocol("")),
  1404  				},
  1405  				{
  1406  					Name: "Path",
  1407  					Type: meta.TypeString,
  1408  				},
  1409  				{
  1410  					Name: "Host",
  1411  					Type: meta.TypeString,
  1412  				},
  1413  				{
  1414  					Name: "DelayLoop",
  1415  					Type: meta.TypeInt,
  1416  				},
  1417  			},
  1418  		},
  1419  		Tags: &dsl.FieldTags{
  1420  			MapConv: "Settings.ProxyLB.HealthCheck,recursive",
  1421  		},
  1422  	}
  1423  }
  1424  
  1425  func (f *fieldsDef) ProxyLBSorryServer() *dsl.FieldDesc {
  1426  	return &dsl.FieldDesc{
  1427  		Name: "SorryServer",
  1428  		Type: &dsl.Model{
  1429  			Name: "ProxyLBSorryServer",
  1430  			Fields: []*dsl.FieldDesc{
  1431  				{
  1432  					Name: "IPAddress",
  1433  					Type: meta.TypeString,
  1434  				},
  1435  				{
  1436  					Name: "Port",
  1437  					Type: meta.TypeInt,
  1438  					Tags: &dsl.FieldTags{
  1439  						MapConv: ",omitempty",
  1440  					},
  1441  				},
  1442  			},
  1443  		},
  1444  		Tags: &dsl.FieldTags{
  1445  			MapConv: "Settings.ProxyLB.SorryServer,recursive",
  1446  		},
  1447  	}
  1448  }
  1449  
  1450  func (f *fieldsDef) ProxyLBBindPorts() *dsl.FieldDesc {
  1451  	return &dsl.FieldDesc{
  1452  		Name: "BindPorts",
  1453  		Type: &dsl.Model{
  1454  			Name:    "ProxyLBBindPort",
  1455  			IsArray: true,
  1456  			Fields: []*dsl.FieldDesc{
  1457  				{
  1458  					Name: "ProxyMode",
  1459  					Type: meta.Static(types.EProxyLBProxyMode("")),
  1460  				},
  1461  				{
  1462  					Name: "Port",
  1463  					Type: meta.TypeInt,
  1464  				},
  1465  				{
  1466  					Name: "RedirectToHTTPS",
  1467  					Type: meta.TypeFlag,
  1468  				},
  1469  				{
  1470  					Name: "SupportHTTP2",
  1471  					Type: meta.TypeFlag,
  1472  				},
  1473  				{
  1474  					Name: "AddResponseHeader",
  1475  					Type: &dsl.Model{
  1476  						Name:    "ProxyLBResponseHeader",
  1477  						IsArray: true,
  1478  						Fields: []*dsl.FieldDesc{
  1479  							fields.Def("Header", meta.TypeString),
  1480  							fields.Def("Value", meta.TypeString),
  1481  						},
  1482  					},
  1483  					Tags: &dsl.FieldTags{
  1484  						MapConv: "[]AddResponseHeader,recursive",
  1485  					},
  1486  				},
  1487  				{
  1488  					Name: "SSLPolicy",
  1489  					Type: meta.TypeString,
  1490  				},
  1491  			},
  1492  		},
  1493  		Tags: &dsl.FieldTags{
  1494  			MapConv: "Settings.ProxyLB.[]BindPorts,recursive",
  1495  		},
  1496  	}
  1497  }
  1498  
  1499  func (f *fieldsDef) ProxyLBServers() *dsl.FieldDesc {
  1500  	return &dsl.FieldDesc{
  1501  		Name: "Servers",
  1502  		Type: &dsl.Model{
  1503  			Name:    "ProxyLBServer",
  1504  			IsArray: true,
  1505  			Fields: []*dsl.FieldDesc{
  1506  				{
  1507  					Name: "IPAddress",
  1508  					Type: meta.TypeString,
  1509  				},
  1510  				{
  1511  					Name: "Port",
  1512  					Type: meta.TypeInt,
  1513  				},
  1514  				{
  1515  					Name: "ServerGroup",
  1516  					Type: meta.TypeString,
  1517  				},
  1518  				{
  1519  					Name: "Enabled",
  1520  					Type: meta.TypeFlag,
  1521  				},
  1522  			},
  1523  		},
  1524  		Tags: &dsl.FieldTags{
  1525  			MapConv: "Settings.ProxyLB.[]Servers,recursive",
  1526  		},
  1527  	}
  1528  }
  1529  
  1530  func (f *fieldsDef) ProxyLBRules() *dsl.FieldDesc {
  1531  	return &dsl.FieldDesc{
  1532  		Name: "Rules",
  1533  		Type: &dsl.Model{
  1534  			Name:    "ProxyLBRule",
  1535  			IsArray: true,
  1536  			Fields: []*dsl.FieldDesc{
  1537  				{
  1538  					Name: "Host",
  1539  					Type: meta.TypeString,
  1540  				},
  1541  				{
  1542  					Name: "Path",
  1543  					Type: meta.TypeString,
  1544  				},
  1545  				{
  1546  					Name: "SourceIPs",
  1547  					Type: meta.TypeString,
  1548  				},
  1549  				{
  1550  					Name: "RequestHeaderName",
  1551  					Type: meta.TypeString,
  1552  				},
  1553  				{
  1554  					Name: "RequestHeaderValue",
  1555  					Type: meta.TypeString,
  1556  				},
  1557  				{
  1558  					Name: "RequestHeaderValueIgnoreCase",
  1559  					Type: meta.TypeFlag,
  1560  				},
  1561  				{
  1562  					Name: "RequestHeaderValueNotMatch",
  1563  					Type: meta.TypeFlag,
  1564  				},
  1565  				{
  1566  					Name: "ServerGroup",
  1567  					Type: meta.TypeString,
  1568  					Tags: &dsl.FieldTags{
  1569  						MapConv: ",omitempty",
  1570  						JSON:    ",omitempty",
  1571  					},
  1572  				},
  1573  				{
  1574  					Name: "Action",
  1575  					Type: meta.Static(types.EProxyLBRuleAction("")),
  1576  					Tags: &dsl.FieldTags{
  1577  						MapConv: ",omitempty",
  1578  						JSON:    ",omitempty",
  1579  					},
  1580  				},
  1581  				{
  1582  					Name: "RedirectLocation",
  1583  					Type: meta.TypeString,
  1584  					Tags: &dsl.FieldTags{
  1585  						MapConv: ",omitempty",
  1586  						JSON:    ",omitempty",
  1587  					},
  1588  				},
  1589  				{
  1590  					Name: "RedirectStatusCode",
  1591  					Type: meta.Static(types.EProxyLBRedirectStatusCode(0)),
  1592  					Tags: &dsl.FieldTags{
  1593  						MapConv: ",omitempty",
  1594  						JSON:    ",omitempty",
  1595  					},
  1596  				},
  1597  				{
  1598  					Name: "FixedStatusCode",
  1599  					Type: meta.Static(types.EProxyLBFixedStatusCode(0)),
  1600  					Tags: &dsl.FieldTags{
  1601  						MapConv: ",omitempty",
  1602  						JSON:    ",omitempty",
  1603  					},
  1604  				},
  1605  				{
  1606  					Name: "FixedContentType",
  1607  					Type: meta.Static(types.EProxyLBFixedContentType("")),
  1608  					Tags: &dsl.FieldTags{
  1609  						MapConv: ",omitempty",
  1610  						JSON:    ",omitempty",
  1611  					},
  1612  				},
  1613  				{
  1614  					Name: "FixedMessageBody",
  1615  					Type: meta.TypeString,
  1616  					Tags: &dsl.FieldTags{
  1617  						MapConv: ",omitempty",
  1618  						JSON:    ",omitempty",
  1619  					},
  1620  				},
  1621  			},
  1622  		},
  1623  		Tags: &dsl.FieldTags{
  1624  			MapConv: "Settings.ProxyLB.[]Rules,recursive",
  1625  		},
  1626  	}
  1627  }
  1628  
  1629  func (f *fieldsDef) ProxyLBLetsEncrypt() *dsl.FieldDesc {
  1630  	return &dsl.FieldDesc{
  1631  		Name: "LetsEncrypt",
  1632  		Type: &dsl.Model{
  1633  			Name: "ProxyLBACMESetting",
  1634  			Fields: []*dsl.FieldDesc{
  1635  				{
  1636  					Name: "CommonName",
  1637  					Type: meta.TypeString,
  1638  				},
  1639  				{
  1640  					Name: "Enabled",
  1641  					Type: meta.TypeFlag,
  1642  				},
  1643  				{
  1644  					Name: "SubjectAltNames",
  1645  					Type: meta.TypeStringSlice,
  1646  					Tags: &dsl.FieldTags{
  1647  						MapConv: ",omitempty",
  1648  						JSON:    ",omitempty",
  1649  					},
  1650  				},
  1651  			},
  1652  		},
  1653  		Tags: &dsl.FieldTags{
  1654  			MapConv: "Settings.ProxyLB.LetsEncrypt,recursive",
  1655  		},
  1656  	}
  1657  }
  1658  
  1659  func (f *fieldsDef) ProxyLBStickySession() *dsl.FieldDesc {
  1660  	return &dsl.FieldDesc{
  1661  		Name: "StickySession",
  1662  		Type: &dsl.Model{
  1663  			Name: "ProxyLBStickySession",
  1664  			Fields: []*dsl.FieldDesc{
  1665  				{
  1666  					Name: "Method",
  1667  					Type: meta.TypeString,
  1668  				},
  1669  				{
  1670  					Name: "Enabled",
  1671  					Type: meta.TypeFlag,
  1672  				},
  1673  			},
  1674  		},
  1675  		Tags: &dsl.FieldTags{
  1676  			MapConv: "Settings.ProxyLB.StickySession,recursive",
  1677  		},
  1678  	}
  1679  }
  1680  
  1681  func (f *fieldsDef) ProxyLBGzip() *dsl.FieldDesc {
  1682  	return &dsl.FieldDesc{
  1683  		Name: "Gzip",
  1684  		Type: &dsl.Model{
  1685  			Name: "ProxyLBGzip",
  1686  			Fields: []*dsl.FieldDesc{
  1687  				{
  1688  					Name: "Enabled",
  1689  					Type: meta.TypeFlag,
  1690  				},
  1691  			},
  1692  		},
  1693  		Tags: &dsl.FieldTags{
  1694  			MapConv: "Settings.ProxyLB.Gzip,recursive",
  1695  		},
  1696  	}
  1697  }
  1698  
  1699  func (f *fieldsDef) ProxyLBBackendHttpKeepAlive() *dsl.FieldDesc {
  1700  	return &dsl.FieldDesc{
  1701  		Name: "BackendHttpKeepAlive",
  1702  		Type: &dsl.Model{
  1703  			Name: "ProxyLBBackendHttpKeepAlive",
  1704  			Fields: []*dsl.FieldDesc{
  1705  				{
  1706  					Name: "Mode",
  1707  					Type: meta.Static(types.EProxyLBBackendHttpKeepAlive("")),
  1708  				},
  1709  			},
  1710  		},
  1711  		Tags: &dsl.FieldTags{
  1712  			MapConv: "Settings.ProxyLB.BackendHttpKeepAlive,recursive",
  1713  		},
  1714  	}
  1715  }
  1716  
  1717  func (f *fieldsDef) ProxyLBProxyProtocol() *dsl.FieldDesc {
  1718  	return &dsl.FieldDesc{
  1719  		Name: "ProxyProtocol",
  1720  		Type: &dsl.Model{
  1721  			Name: "ProxyLBProxyProtocol",
  1722  			Fields: []*dsl.FieldDesc{
  1723  				{
  1724  					Name: "Enabled",
  1725  					Type: meta.TypeFlag,
  1726  				},
  1727  			},
  1728  		},
  1729  		Tags: &dsl.FieldTags{
  1730  			MapConv: "Settings.ProxyLB.ProxyProtocol,recursive",
  1731  		},
  1732  	}
  1733  }
  1734  
  1735  func (f *fieldsDef) ProxyLBSyslog() *dsl.FieldDesc {
  1736  	return &dsl.FieldDesc{
  1737  		Name: "Syslog",
  1738  		Type: &dsl.Model{
  1739  			Name: "ProxyLBSyslog",
  1740  			Fields: []*dsl.FieldDesc{
  1741  				{
  1742  					Name: "Server",
  1743  					Type: meta.TypeString,
  1744  				},
  1745  				{
  1746  					Name:         "Port",
  1747  					Type:         meta.TypeInt,
  1748  					DefaultValue: `514`,
  1749  				},
  1750  			},
  1751  		},
  1752  		Tags: &dsl.FieldTags{
  1753  			MapConv: "Settings.ProxyLB.Syslog,recursive",
  1754  		},
  1755  	}
  1756  }
  1757  
  1758  func (f *fieldsDef) ProxyLBTimeout() *dsl.FieldDesc {
  1759  	return &dsl.FieldDesc{
  1760  		Name: "Timeout",
  1761  		Type: &dsl.Model{
  1762  			Name: "ProxyLBTimeout",
  1763  			Fields: []*dsl.FieldDesc{
  1764  				{
  1765  					Name:         "InactiveSec",
  1766  					Type:         meta.TypeInt,
  1767  					DefaultValue: `10`,
  1768  				},
  1769  			},
  1770  		},
  1771  		Tags: &dsl.FieldTags{
  1772  			MapConv: "Settings.ProxyLB.Timeout,recursive,omitempty",
  1773  			JSON:    ",omitempty",
  1774  		},
  1775  	}
  1776  }
  1777  
  1778  func (f *fieldsDef) LocalRouterSecretKeys() *dsl.FieldDesc {
  1779  	return &dsl.FieldDesc{
  1780  		Name: "SecretKeys",
  1781  		Type: meta.TypeStringSlice,
  1782  		Tags: &dsl.FieldTags{
  1783  			MapConv: "Status.SecretKeys",
  1784  		},
  1785  	}
  1786  }
  1787  
  1788  func (f *fieldsDef) LocalRouterSwitch() *dsl.FieldDesc {
  1789  	return &dsl.FieldDesc{
  1790  		Name: "Switch",
  1791  		Type: &dsl.Model{
  1792  			Name: "LocalRouterSwitch",
  1793  			Fields: []*dsl.FieldDesc{
  1794  				{
  1795  					Name: "Code",
  1796  					Type: meta.TypeString,
  1797  				},
  1798  				{
  1799  					Name: "Category",
  1800  					Type: meta.TypeString,
  1801  				},
  1802  				{
  1803  					Name: "ZoneID",
  1804  					Type: meta.TypeString,
  1805  				},
  1806  			},
  1807  		},
  1808  		Tags: &dsl.FieldTags{
  1809  			MapConv: "Settings.LocalRouter.Switch,recursive",
  1810  		},
  1811  	}
  1812  }
  1813  
  1814  func (f *fieldsDef) LocalRouterInterface() *dsl.FieldDesc {
  1815  	return &dsl.FieldDesc{
  1816  		Name: "Interface",
  1817  		Type: &dsl.Model{
  1818  			Name: "LocalRouterInterface",
  1819  			Fields: []*dsl.FieldDesc{
  1820  				{
  1821  					Name: "VirtualIPAddress",
  1822  					Type: meta.TypeString,
  1823  				},
  1824  				{
  1825  					Name: "IPAddress",
  1826  					Type: meta.TypeStringSlice,
  1827  				},
  1828  				{
  1829  					Name: "NetworkMaskLen",
  1830  					Type: meta.TypeInt,
  1831  				},
  1832  				{
  1833  					Name: "VRID",
  1834  					Type: meta.TypeInt,
  1835  				},
  1836  			},
  1837  		},
  1838  		Tags: &dsl.FieldTags{
  1839  			MapConv: "Settings.LocalRouter.Interface,recursive",
  1840  		},
  1841  	}
  1842  }
  1843  
  1844  func (f *fieldsDef) LocalRouterPeers() *dsl.FieldDesc {
  1845  	return &dsl.FieldDesc{
  1846  		Name: "Peers",
  1847  		Type: &dsl.Model{
  1848  			Name:    "LocalRouterPeer",
  1849  			IsArray: true,
  1850  			Fields: []*dsl.FieldDesc{
  1851  				{
  1852  					Name: "ID",
  1853  					Type: meta.TypeID,
  1854  				},
  1855  				{
  1856  					Name: "SecretKey",
  1857  					Type: meta.TypeString,
  1858  				},
  1859  				{
  1860  					Name: "Enabled",
  1861  					Type: meta.TypeFlag,
  1862  				},
  1863  				{
  1864  					Name: "Description",
  1865  					Type: meta.TypeString,
  1866  				},
  1867  			},
  1868  		},
  1869  		Tags: &dsl.FieldTags{
  1870  			MapConv: "Settings.LocalRouter.[]Peers,recursive",
  1871  		},
  1872  	}
  1873  }
  1874  
  1875  func (f *fieldsDef) LocalRouterStaticRoutes() *dsl.FieldDesc {
  1876  	return &dsl.FieldDesc{
  1877  		Name: "StaticRoutes",
  1878  		Type: &dsl.Model{
  1879  			Name:    "LocalRouterStaticRoute",
  1880  			IsArray: true,
  1881  			Fields: []*dsl.FieldDesc{
  1882  				{
  1883  					Name: "Prefix",
  1884  					Type: meta.TypeString,
  1885  				},
  1886  				{
  1887  					Name: "NextHop",
  1888  					Type: meta.TypeString,
  1889  				},
  1890  			},
  1891  		},
  1892  		Tags: &dsl.FieldTags{
  1893  			MapConv: "Settings.LocalRouter.[]StaticRoutes,recursive",
  1894  		},
  1895  	}
  1896  }
  1897  
  1898  func (f *fieldsDef) EnhancedDBMaxConnections() *dsl.FieldDesc {
  1899  	return &dsl.FieldDesc{
  1900  		Name: "MaxConnections",
  1901  		Type: meta.TypeInt,
  1902  		Tags: &dsl.FieldTags{
  1903  			MapConv: "Config.MaxConnections",
  1904  		},
  1905  	}
  1906  }
  1907  
  1908  func (f *fieldsDef) EnhancedDBDatabaseName() *dsl.FieldDesc {
  1909  	return &dsl.FieldDesc{
  1910  		Name: "DatabaseName",
  1911  		Type: meta.TypeString,
  1912  		Tags: &dsl.FieldTags{
  1913  			MapConv: "Status.DatabaseName",
  1914  		},
  1915  	}
  1916  }
  1917  
  1918  func (f *fieldsDef) EnhancedDBDatabaseType() *dsl.FieldDesc {
  1919  	return &dsl.FieldDesc{
  1920  		Name: "DatabaseType",
  1921  		Type: meta.Static(types.EnhancedDBType("")),
  1922  		Tags: &dsl.FieldTags{
  1923  			MapConv: "Status.DatabaseType",
  1924  		},
  1925  	}
  1926  }
  1927  
  1928  func (f *fieldsDef) EnhancedDBDatabaseRegion() *dsl.FieldDesc {
  1929  	return &dsl.FieldDesc{
  1930  		Name: "Region",
  1931  		Type: meta.Static(types.EnhancedDBRegion("")),
  1932  		Tags: &dsl.FieldTags{
  1933  			MapConv: "Status.Region",
  1934  		},
  1935  	}
  1936  }
  1937  
  1938  func (f *fieldsDef) EnhancedDBDatabaseHostName() *dsl.FieldDesc {
  1939  	return &dsl.FieldDesc{
  1940  		Name: "HostName",
  1941  		Type: meta.TypeString,
  1942  		Tags: &dsl.FieldTags{
  1943  			MapConv: "Status.HostName",
  1944  		},
  1945  	}
  1946  }
  1947  
  1948  func (f *fieldsDef) EnhancedDBDatabasePort() *dsl.FieldDesc {
  1949  	return &dsl.FieldDesc{
  1950  		Name: "Port",
  1951  		Type: meta.TypeInt,
  1952  		Tags: &dsl.FieldTags{
  1953  			MapConv: "Status.Port",
  1954  		},
  1955  	}
  1956  }
  1957  
  1958  func (f *fieldsDef) ContainerRegistrySubDomainLabel() *dsl.FieldDesc {
  1959  	return &dsl.FieldDesc{
  1960  		Name: "SubDomainLabel",
  1961  		Type: meta.TypeString,
  1962  		Tags: &dsl.FieldTags{
  1963  			MapConv: "Status.RegistryName",
  1964  		},
  1965  	}
  1966  }
  1967  
  1968  func (f *fieldsDef) ContainerRegistryFQDN() *dsl.FieldDesc {
  1969  	return &dsl.FieldDesc{
  1970  		Name: "FQDN",
  1971  		Type: meta.TypeString,
  1972  		Tags: &dsl.FieldTags{
  1973  			MapConv: "Status.FQDN",
  1974  		},
  1975  	}
  1976  }
  1977  
  1978  func (f *fieldsDef) ContainerRegistryAccessLevel() *dsl.FieldDesc {
  1979  	return &dsl.FieldDesc{
  1980  		Name: "AccessLevel",
  1981  		Type: meta.Static(types.EContainerRegistryAccessLevel("")),
  1982  		Tags: &dsl.FieldTags{
  1983  			MapConv: "Settings.ContainerRegistry.Public",
  1984  		},
  1985  	}
  1986  }
  1987  
  1988  func (f *fieldsDef) ContainerRegistryVirtualDomain() *dsl.FieldDesc {
  1989  	return &dsl.FieldDesc{
  1990  		Name: "VirtualDomain",
  1991  		Type: meta.TypeString,
  1992  		Tags: &dsl.FieldTags{
  1993  			MapConv: "Settings.ContainerRegistry.VirtualDomain",
  1994  		},
  1995  	}
  1996  }
  1997  
  1998  func (f *fieldsDef) SettingsHash() *dsl.FieldDesc {
  1999  	return &dsl.FieldDesc{
  2000  		Name: "SettingsHash",
  2001  		Type: meta.TypeString,
  2002  		Tags: &dsl.FieldTags{
  2003  			MapConv: ",omitempty",
  2004  			JSON:    ",omitempty",
  2005  		},
  2006  	}
  2007  }
  2008  
  2009  func (f *fieldsDef) InstanceHostName() *dsl.FieldDesc {
  2010  	return &dsl.FieldDesc{
  2011  		Name: "InstanceHostName",
  2012  		Type: meta.TypeString,
  2013  		Tags: &dsl.FieldTags{
  2014  			MapConv: "Instance.Host.Name",
  2015  		},
  2016  	}
  2017  }
  2018  
  2019  func (f *fieldsDef) InstanceHostInfoURL() *dsl.FieldDesc {
  2020  	return &dsl.FieldDesc{
  2021  		Name: "InstanceHostInfoURL",
  2022  		Type: meta.TypeString,
  2023  		Tags: &dsl.FieldTags{
  2024  			MapConv: "Instance.Host.InfoURL",
  2025  		},
  2026  	}
  2027  }
  2028  
  2029  func (f *fieldsDef) InstanceStatus() *dsl.FieldDesc {
  2030  	return &dsl.FieldDesc{
  2031  		Name: "InstanceStatus",
  2032  		Type: meta.TypeInstanceStatus,
  2033  		Tags: &dsl.FieldTags{
  2034  			MapConv: "Instance.Status",
  2035  		},
  2036  	}
  2037  }
  2038  
  2039  func (f *fieldsDef) InstanceBeforeStatus() *dsl.FieldDesc {
  2040  	return &dsl.FieldDesc{
  2041  		Name: "InstanceBeforeStatus",
  2042  		Type: meta.TypeInstanceStatus,
  2043  		Tags: &dsl.FieldTags{
  2044  			MapConv: "Instance.BeforeStatus",
  2045  		},
  2046  	}
  2047  }
  2048  
  2049  func (f *fieldsDef) InstanceStatusChangedAt() *dsl.FieldDesc {
  2050  	return &dsl.FieldDesc{
  2051  		Name: "InstanceStatusChangedAt",
  2052  		Type: meta.TypeTime,
  2053  		Tags: &dsl.FieldTags{
  2054  			MapConv: "Instance.StatusChangedAt",
  2055  		},
  2056  	}
  2057  }
  2058  
  2059  func (f *fieldsDef) InstanceWarnings() *dsl.FieldDesc {
  2060  	return &dsl.FieldDesc{
  2061  		Name: "InstanceWarnings",
  2062  		Type: meta.TypeString,
  2063  		Tags: &dsl.FieldTags{
  2064  			MapConv: "Instance.Warnings",
  2065  		},
  2066  	}
  2067  }
  2068  
  2069  func (f *fieldsDef) InstanceWarningsValue() *dsl.FieldDesc {
  2070  	return &dsl.FieldDesc{
  2071  		Name: "InstanceWarningsValue",
  2072  		Type: meta.TypeInt,
  2073  		Tags: &dsl.FieldTags{
  2074  			MapConv: "Instance.WarningsValue",
  2075  		},
  2076  	}
  2077  }
  2078  
  2079  func (f *fieldsDef) SubnetID() *dsl.FieldDesc {
  2080  	return &dsl.FieldDesc{
  2081  		Name: "SubnetID",
  2082  		Type: meta.TypeID,
  2083  		Tags: &dsl.FieldTags{
  2084  			MapConv: "Subnet.ID,omitempty",
  2085  		},
  2086  	}
  2087  }
  2088  
  2089  func (f *fieldsDef) InterfaceID() *dsl.FieldDesc {
  2090  	return &dsl.FieldDesc{
  2091  		Name: "InterfaceID",
  2092  		Type: meta.TypeID,
  2093  		Tags: &dsl.FieldTags{
  2094  			MapConv: "Interface.ID,omitempty",
  2095  		},
  2096  	}
  2097  }
  2098  
  2099  func (f *fieldsDef) Interfaces() *dsl.FieldDesc {
  2100  	return &dsl.FieldDesc{
  2101  		Name: "Interfaces",
  2102  		Type: models.interfaceModel(),
  2103  		Tags: &dsl.FieldTags{
  2104  			JSON:    ",omitempty",
  2105  			MapConv: "[]Interfaces,recursive,omitempty",
  2106  		},
  2107  	}
  2108  }
  2109  
  2110  func (f *fieldsDef) VPCRouterInterfaces() *dsl.FieldDesc {
  2111  	return &dsl.FieldDesc{
  2112  		Name: "Interfaces",
  2113  		Type: models.vpcRouterInterfaceModel(),
  2114  		Tags: &dsl.FieldTags{
  2115  			JSON:    ",omitempty",
  2116  			MapConv: "[]Interfaces,recursive,omitempty",
  2117  		},
  2118  	}
  2119  }
  2120  
  2121  func (f *fieldsDef) MobileGatewayInterfaces() *dsl.FieldDesc {
  2122  	return &dsl.FieldDesc{
  2123  		Name: "Interfaces",
  2124  		Type: models.mobileGatewayInterfaceModel(),
  2125  		Tags: &dsl.FieldTags{
  2126  			JSON:    ",omitempty",
  2127  			MapConv: "[]Interfaces,recursive,omitempty",
  2128  		},
  2129  	}
  2130  }
  2131  
  2132  func (f *fieldsDef) NoteClass() *dsl.FieldDesc {
  2133  	return &dsl.FieldDesc{
  2134  		Name: "Class",
  2135  		Type: meta.TypeString,
  2136  	}
  2137  }
  2138  
  2139  func (f *fieldsDef) NoteContent() *dsl.FieldDesc {
  2140  	return &dsl.FieldDesc{
  2141  		Name: "Content",
  2142  		Type: meta.TypeString,
  2143  	}
  2144  }
  2145  
  2146  func (f *fieldsDef) Description() *dsl.FieldDesc {
  2147  	return &dsl.FieldDesc{
  2148  		Name: "Description",
  2149  		Type: meta.TypeString,
  2150  	}
  2151  }
  2152  
  2153  func (f *fieldsDef) Availability() *dsl.FieldDesc {
  2154  	return &dsl.FieldDesc{
  2155  		Name: "Availability",
  2156  		Type: meta.TypeAvailability,
  2157  	}
  2158  }
  2159  
  2160  func (f *fieldsDef) Scope() *dsl.FieldDesc {
  2161  	return &dsl.FieldDesc{
  2162  		Name: "Scope",
  2163  		Type: meta.TypeScope,
  2164  	}
  2165  }
  2166  
  2167  func (f *fieldsDef) BandWidthMbps() *dsl.FieldDesc {
  2168  	return &dsl.FieldDesc{
  2169  		Name: "BandWidthMbps",
  2170  		Type: meta.TypeInt,
  2171  	}
  2172  }
  2173  
  2174  func (f *fieldsDef) DiskConnection() *dsl.FieldDesc {
  2175  	return &dsl.FieldDesc{
  2176  		Name: "Connection",
  2177  		Type: meta.TypeDiskConnection,
  2178  		Tags: &dsl.FieldTags{
  2179  			JSON:    ",omitempty",
  2180  			MapConv: ",omitempty",
  2181  		},
  2182  	}
  2183  }
  2184  
  2185  func (f *fieldsDef) DiskEncryptionAlgorithm() *dsl.FieldDesc {
  2186  	return &dsl.FieldDesc{
  2187  		Name: "EncryptionAlgorithm",
  2188  		Type: meta.Static(types.EDiskEncryptionAlgorithm("")),
  2189  		Tags: &dsl.FieldTags{
  2190  			JSON:    ",omitempty",
  2191  			MapConv: ",omitempty",
  2192  		},
  2193  	}
  2194  }
  2195  
  2196  func (f *fieldsDef) DiskConnectionOrder() *dsl.FieldDesc {
  2197  	return &dsl.FieldDesc{
  2198  		Name: "ConnectionOrder",
  2199  		Type: meta.TypeInt,
  2200  	}
  2201  }
  2202  
  2203  func (f *fieldsDef) DiskReinstallCount() *dsl.FieldDesc {
  2204  	return &dsl.FieldDesc{
  2205  		Name: "ReinstallCount",
  2206  		Type: meta.TypeInt,
  2207  	}
  2208  }
  2209  
  2210  func (f *fieldsDef) SizeMB() *dsl.FieldDesc {
  2211  	return &dsl.FieldDesc{
  2212  		Name: "SizeMB",
  2213  		Type: meta.TypeInt,
  2214  		Methods: []*dsl.MethodDesc{
  2215  			{
  2216  				Name:        "GetSizeGB",
  2217  				ResultTypes: []meta.Type{meta.TypeInt},
  2218  			},
  2219  			{
  2220  				Name: "SetSizeGB",
  2221  				Arguments: dsl.Arguments{
  2222  					{
  2223  						Name: "size",
  2224  						Type: meta.TypeInt,
  2225  					},
  2226  				},
  2227  			},
  2228  		},
  2229  	}
  2230  }
  2231  
  2232  func (f *fieldsDef) MigratedMB() *dsl.FieldDesc {
  2233  	return &dsl.FieldDesc{
  2234  		Name: "MigratedMB",
  2235  		Type: meta.TypeInt,
  2236  		Methods: []*dsl.MethodDesc{
  2237  			{
  2238  				Name:        "GetMigratedGB",
  2239  				ResultTypes: []meta.Type{meta.TypeInt},
  2240  			},
  2241  		},
  2242  	}
  2243  }
  2244  
  2245  func (f *fieldsDef) DefaultRoute() *dsl.FieldDesc {
  2246  	return &dsl.FieldDesc{
  2247  		Name: "DefaultRoute",
  2248  		Type: meta.TypeString,
  2249  	}
  2250  }
  2251  
  2252  func (f *fieldsDef) NextHop() *dsl.FieldDesc {
  2253  	return &dsl.FieldDesc{
  2254  		Name: "NextHop",
  2255  		Type: meta.TypeString,
  2256  		Description: `
  2257  			スイッチ+ルータでの追加IPアドレスブロックを示すSubnetの中でのみ設定される項目。
  2258  			この場合DefaultRouteの値は設定されないためNextHopを代用する。
  2259  			StaticRouteと同じ値が設定される。`,
  2260  	}
  2261  }
  2262  
  2263  func (f *fieldsDef) StaticRoute() *dsl.FieldDesc {
  2264  	return &dsl.FieldDesc{
  2265  		Name: "StaticRoute",
  2266  		Type: meta.TypeString,
  2267  		Description: `
  2268  			スイッチ+ルータでの追加IPアドレスブロックを示すSubnetの中でのみ設定される項目。
  2269  			この場合DefaultRouteの値は設定されないためNextHopを代用する。
  2270  			NextHopと同じ値が設定される。`,
  2271  	}
  2272  }
  2273  
  2274  func (f *fieldsDef) NetworkMaskLen() *dsl.FieldDesc {
  2275  	return &dsl.FieldDesc{
  2276  		Name: "NetworkMaskLen",
  2277  		Type: meta.TypeInt,
  2278  	}
  2279  }
  2280  
  2281  func (f *fieldsDef) NetworkAddress() *dsl.FieldDesc {
  2282  	return &dsl.FieldDesc{
  2283  		Name: "NetworkAddress",
  2284  		Type: meta.TypeString,
  2285  	}
  2286  }
  2287  
  2288  func (f *fieldsDef) UserSubnetNetworkMaskLen() *dsl.FieldDesc {
  2289  	return &dsl.FieldDesc{
  2290  		Name: "NetworkMaskLen",
  2291  		Type: meta.TypeInt,
  2292  		Tags: &dsl.FieldTags{
  2293  			MapConv: "UserSubnet.NetworkMaskLen",
  2294  		},
  2295  	}
  2296  }
  2297  
  2298  func (f *fieldsDef) UserSubnetDefaultRoute() *dsl.FieldDesc {
  2299  	return &dsl.FieldDesc{
  2300  		Name: "DefaultRoute",
  2301  		Type: meta.TypeString,
  2302  		Tags: &dsl.FieldTags{
  2303  			MapConv: "UserSubnet.DefaultRoute",
  2304  		},
  2305  	}
  2306  }
  2307  
  2308  func (f *fieldsDef) RemarkNetworkMaskLen() *dsl.FieldDesc {
  2309  	return &dsl.FieldDesc{
  2310  		Name: "NetworkMaskLen",
  2311  		Type: meta.TypeInt,
  2312  		Tags: &dsl.FieldTags{
  2313  			MapConv: "Remark.Network.NetworkMaskLen",
  2314  		},
  2315  	}
  2316  }
  2317  
  2318  func (f *fieldsDef) RemarkZoneID() *dsl.FieldDesc {
  2319  	return &dsl.FieldDesc{
  2320  		Name: "ZoneID",
  2321  		Type: meta.TypeID,
  2322  		Tags: &dsl.FieldTags{
  2323  			MapConv: "Remark.Zone.ID",
  2324  		},
  2325  	}
  2326  }
  2327  
  2328  func (f *fieldsDef) RemarkDefaultRoute() *dsl.FieldDesc {
  2329  	return &dsl.FieldDesc{
  2330  		Name: "DefaultRoute",
  2331  		Type: meta.TypeString,
  2332  		Tags: &dsl.FieldTags{
  2333  			MapConv: "Remark.Network.DefaultRoute",
  2334  		},
  2335  	}
  2336  }
  2337  
  2338  func (f *fieldsDef) RemarkServerIPAddress() *dsl.FieldDesc {
  2339  	return &dsl.FieldDesc{
  2340  		Name: "IPAddresses",
  2341  		Type: meta.TypeStringSlice,
  2342  		Tags: &dsl.FieldTags{
  2343  			MapConv: "Remark.[]Servers.IPAddress",
  2344  		},
  2345  	}
  2346  }
  2347  
  2348  func (f *fieldsDef) RemarkVRID() *dsl.FieldDesc {
  2349  	return &dsl.FieldDesc{
  2350  		Name: "VRID",
  2351  		Type: meta.TypeInt,
  2352  		Tags: &dsl.FieldTags{
  2353  			MapConv: "Remark.VRRP.VRID",
  2354  		},
  2355  	}
  2356  }
  2357  
  2358  func (f *fieldsDef) RemarkDBConf() *dsl.FieldDesc {
  2359  	return &dsl.FieldDesc{
  2360  		Name: "Conf",
  2361  		Type: &dsl.Model{
  2362  			Name:      "DatabaseRemarkDBConfCommon",
  2363  			NakedType: meta.Static(naked.ApplianceRemarkDBConfCommon{}),
  2364  			Fields: []*dsl.FieldDesc{
  2365  				fields.Def("DatabaseName", meta.TypeString),
  2366  				fields.Def("DatabaseVersion", meta.TypeString),
  2367  				fields.Def("DatabaseRevision", meta.TypeString),
  2368  				fields.Def("DefaultUser", meta.TypeString),
  2369  				fields.Def("UserPassword", meta.TypeString),
  2370  			},
  2371  		},
  2372  		Tags: &dsl.FieldTags{
  2373  			MapConv: "Remark.DBConf.Common,recursive",
  2374  		},
  2375  	}
  2376  }
  2377  
  2378  func (f *fieldsDef) RemarkSourceAppliance() *dsl.FieldDesc {
  2379  	return &dsl.FieldDesc{
  2380  		Name: "SourceID",
  2381  		Type: meta.TypeID,
  2382  		Tags: &dsl.FieldTags{
  2383  			MapConv: "Remark.SourceAppliance.ID",
  2384  		},
  2385  	}
  2386  }
  2387  
  2388  func (f *fieldsDef) DatabaseSettingsCommon() *dsl.FieldDesc {
  2389  	return &dsl.FieldDesc{
  2390  		Name: "CommonSetting",
  2391  		Type: &dsl.Model{
  2392  			Name:      "DatabaseSettingCommon",
  2393  			NakedType: meta.Static(naked.DatabaseSettingCommon{}),
  2394  			Fields: []*dsl.FieldDesc{
  2395  				fields.Def("WebUI", meta.Static(types.WebUI(""))),
  2396  				fields.Def("ServicePort", meta.TypeInt),
  2397  				fields.Def("SourceNetwork", meta.TypeStringSlice),
  2398  				fields.Def("DefaultUser", meta.TypeString),
  2399  				fields.Def("UserPassword", meta.TypeString),
  2400  				fields.Def("ReplicaUser", meta.TypeString),
  2401  				fields.Def("ReplicaPassword", meta.TypeString),
  2402  			},
  2403  		},
  2404  		Tags: &dsl.FieldTags{
  2405  			MapConv: "Settings.DBConf.Common,recursive",
  2406  		},
  2407  	}
  2408  }
  2409  
  2410  func (f *fieldsDef) DatabaseSettingsBackup() *dsl.FieldDesc {
  2411  	return &dsl.FieldDesc{
  2412  		Name: "BackupSetting",
  2413  		Type: &dsl.Model{
  2414  			Name:      "DatabaseSettingBackup",
  2415  			NakedType: meta.Static(naked.DatabaseSettingBackup{}),
  2416  			Fields: []*dsl.FieldDesc{
  2417  				fields.Def("Rotate", meta.TypeInt),
  2418  				fields.Def("Time", meta.TypeString),
  2419  				fields.Def("DayOfWeek", meta.Static([]types.EDayOfTheWeek{})),
  2420  				fields.Def("Connect", meta.TypeString),
  2421  			},
  2422  		},
  2423  		Tags: &dsl.FieldTags{
  2424  			MapConv: "Settings.DBConf.Backup,recursive",
  2425  		},
  2426  	}
  2427  }
  2428  
  2429  func (f *fieldsDef) DatabaseSettingsReplication() *dsl.FieldDesc {
  2430  	return &dsl.FieldDesc{
  2431  		Name: "ReplicationSetting",
  2432  		Type: &dsl.Model{
  2433  			Name:      "DatabaseReplicationSetting",
  2434  			NakedType: meta.Static(naked.DatabaseSettingReplication{}),
  2435  			Fields: []*dsl.FieldDesc{
  2436  				// Model以外はスレーブを作成する際のみ設定する
  2437  				fields.Def("Model", meta.Static(types.EDatabaseReplicationModel(""))),
  2438  				fields.Def("IPAddress", meta.TypeString),
  2439  				fields.Def("Port", meta.TypeInt),
  2440  				fields.Def("User", meta.TypeString),
  2441  				fields.Def("Password", meta.TypeString),
  2442  				{
  2443  					Name: "ApplianceID",
  2444  					Type: meta.TypeID,
  2445  					Tags: &dsl.FieldTags{
  2446  						MapConv: "Appliance.ID",
  2447  					},
  2448  				},
  2449  			},
  2450  		},
  2451  		Tags: &dsl.FieldTags{
  2452  			MapConv: "Settings.DBConf.Replication,recursive",
  2453  		},
  2454  	}
  2455  }
  2456  
  2457  func (f *fieldsDef) DatabaseSettingsInterfaces() *dsl.FieldDesc {
  2458  	return &dsl.FieldDesc{
  2459  		Name: "InterfaceSettings",
  2460  		Type: &dsl.Model{
  2461  			Name:      "DatabaseSettingsInterface",
  2462  			NakedType: meta.Static(naked.DatabaseSettingInterface{}),
  2463  			IsArray:   true,
  2464  			Fields: []*dsl.FieldDesc{
  2465  				{
  2466  					Name: "VirtualIPAddress",
  2467  					Type: meta.TypeString,
  2468  				},
  2469  				{
  2470  					Name: "Index",
  2471  					Type: meta.TypeInt,
  2472  				},
  2473  			},
  2474  		},
  2475  		Tags: &dsl.FieldTags{
  2476  			MapConv: "Settings.DBConf.[]Interfaces,omitempty,recursive",
  2477  		},
  2478  	}
  2479  }
  2480  
  2481  func (f *fieldsDef) RequiredHostVersion() *dsl.FieldDesc {
  2482  	return &dsl.FieldDesc{
  2483  		Name: "RequiredHostVersion",
  2484  		Type: meta.TypeStringNumber,
  2485  	}
  2486  }
  2487  
  2488  func (f *fieldsDef) PacketFilterExpressions() *dsl.FieldDesc {
  2489  	return &dsl.FieldDesc{
  2490  		Name: "Expression",
  2491  		Type: models.packetFilterExpressions(),
  2492  		Tags: &dsl.FieldTags{
  2493  			MapConv: "[]Expression,recursive",
  2494  		},
  2495  	}
  2496  }
  2497  
  2498  func (f *fieldsDef) ExpressionHash() *dsl.FieldDesc {
  2499  	return &dsl.FieldDesc{
  2500  		Name: "ExpressionHash",
  2501  		Type: meta.TypeString,
  2502  	}
  2503  }
  2504  
  2505  func (f *fieldsDef) DisplayOrder() *dsl.FieldDesc {
  2506  	return &dsl.FieldDesc{
  2507  		Name: "DisplayOrder",
  2508  		Type: meta.TypeInt64,
  2509  	}
  2510  }
  2511  
  2512  func (f *fieldsDef) IsDummy() *dsl.FieldDesc {
  2513  	return &dsl.FieldDesc{
  2514  		Name: "IsDummy",
  2515  		Type: meta.TypeFlag,
  2516  	}
  2517  }
  2518  
  2519  func (f *fieldsDef) HostName() *dsl.FieldDesc {
  2520  	return &dsl.FieldDesc{
  2521  		Name: "HostName",
  2522  		Type: meta.TypeString,
  2523  	}
  2524  }
  2525  
  2526  func (f *fieldsDef) IPAddress() *dsl.FieldDesc {
  2527  	return &dsl.FieldDesc{
  2528  		Name: "IPAddress",
  2529  		Type: meta.TypeString,
  2530  	}
  2531  }
  2532  
  2533  func (f *fieldsDef) UserIPAddress() *dsl.FieldDesc {
  2534  	return &dsl.FieldDesc{
  2535  		Name: "UserIPAddress",
  2536  		Type: meta.TypeString,
  2537  	}
  2538  }
  2539  
  2540  func (f *fieldsDef) MACAddress() *dsl.FieldDesc {
  2541  	return &dsl.FieldDesc{
  2542  		Name: "MACAddress",
  2543  		Type: meta.TypeString,
  2544  	}
  2545  }
  2546  
  2547  func (f *fieldsDef) User() *dsl.FieldDesc {
  2548  	return &dsl.FieldDesc{
  2549  		Name: "User",
  2550  		Type: meta.TypeString,
  2551  	}
  2552  }
  2553  func (f *fieldsDef) Password() *dsl.FieldDesc {
  2554  	return &dsl.FieldDesc{
  2555  		Name: "Password",
  2556  		Type: meta.TypeString,
  2557  	}
  2558  }
  2559  
  2560  func (f *fieldsDef) SourceInfo() *dsl.FieldDesc {
  2561  	return &dsl.FieldDesc{
  2562  		Name: "SourceInfo",
  2563  		Type: models.sourceArchiveInfo(),
  2564  		Tags: &dsl.FieldTags{
  2565  			MapConv: ",omitempty,recursive",
  2566  		},
  2567  	}
  2568  }
  2569  
  2570  func (f *fieldsDef) VNCProxy() *dsl.FieldDesc {
  2571  	return &dsl.FieldDesc{
  2572  		Name: "VNCProxy",
  2573  		Type: models.vncProxyModel(),
  2574  		Tags: &dsl.FieldTags{
  2575  			JSON: ",omitempty",
  2576  		},
  2577  	}
  2578  }
  2579  
  2580  func (f *fieldsDef) FTPServer() *dsl.FieldDesc {
  2581  	return &dsl.FieldDesc{
  2582  		Name: "FTPServer",
  2583  		Type: models.ftpServerInfo(),
  2584  		Tags: &dsl.FieldTags{
  2585  			JSON: ",omitempty",
  2586  		},
  2587  	}
  2588  }
  2589  
  2590  func (f *fieldsDef) FTPServerChangePassword() *dsl.FieldDesc {
  2591  	return &dsl.FieldDesc{
  2592  		Name: "ChangePassword",
  2593  		Type: meta.TypeFlag,
  2594  	}
  2595  }
  2596  
  2597  func (f *fieldsDef) Region() *dsl.FieldDesc {
  2598  	return &dsl.FieldDesc{
  2599  		Name: "Region",
  2600  		Type: models.region(),
  2601  		Tags: &dsl.FieldTags{
  2602  			JSON: ",omitempty",
  2603  		},
  2604  	}
  2605  }
  2606  
  2607  func (f *fieldsDef) NameServers() *dsl.FieldDesc {
  2608  	return &dsl.FieldDesc{
  2609  		Name: "NameServers",
  2610  		Type: meta.TypeStringSlice,
  2611  		Tags: &dsl.FieldTags{
  2612  			MapConv: ",omitempty",
  2613  			JSON:    ",omitempty",
  2614  		},
  2615  	}
  2616  }
  2617  
  2618  func (f *fieldsDef) Zone() *dsl.FieldDesc {
  2619  	return &dsl.FieldDesc{
  2620  		Name: "Zone",
  2621  		Type: models.zoneInfoModel(),
  2622  		Tags: &dsl.FieldTags{
  2623  			MapConv: ",omitempty,recursive",
  2624  			JSON:    ",omitempty",
  2625  		},
  2626  	}
  2627  }
  2628  
  2629  func (f *fieldsDef) Storage() *dsl.FieldDesc {
  2630  	return &dsl.FieldDesc{
  2631  		Name: "Storage",
  2632  		Type: models.storageModel(),
  2633  		Tags: &dsl.FieldTags{
  2634  			MapConv: ",omitempty,recursive",
  2635  			JSON:    ",omitempty",
  2636  		},
  2637  	}
  2638  }
  2639  
  2640  func (f *fieldsDef) BundleInfo() *dsl.FieldDesc {
  2641  	return &dsl.FieldDesc{
  2642  		Name: "BundleInfo",
  2643  		Type: models.bundleInfoModel(),
  2644  		Tags: &dsl.FieldTags{
  2645  			MapConv: ",omitempty,recursive",
  2646  			JSON:    ",omitempty",
  2647  		},
  2648  	}
  2649  }
  2650  
  2651  func (f *fieldsDef) CreatedAt() *dsl.FieldDesc {
  2652  	return &dsl.FieldDesc{
  2653  		Name: "CreatedAt",
  2654  		Type: meta.TypeTime,
  2655  	}
  2656  }
  2657  
  2658  func (f *fieldsDef) ModifiedAt() *dsl.FieldDesc {
  2659  	return &dsl.FieldDesc{
  2660  		Name: "ModifiedAt",
  2661  		Type: meta.TypeTime,
  2662  	}
  2663  }
  2664  
  2665  /*
  2666  for monitor
  2667  */
  2668  func (f *fieldsDef) MonitorTime() *dsl.FieldDesc {
  2669  	return &dsl.FieldDesc{
  2670  		Name: "Time",
  2671  		Type: meta.TypeTime,
  2672  		Tags: &dsl.FieldTags{
  2673  			MapConv: ",omitempty",
  2674  		},
  2675  	}
  2676  }
  2677  
  2678  func (f *fieldsDef) MonitorCPUTime() *dsl.FieldDesc {
  2679  	return &dsl.FieldDesc{
  2680  		Name: "CPUTime",
  2681  		Type: meta.TypeFloat64,
  2682  		Tags: &dsl.FieldTags{
  2683  			MapConv: ",omitempty",
  2684  		},
  2685  	}
  2686  }
  2687  
  2688  func (f *fieldsDef) MonitorDiskRead() *dsl.FieldDesc {
  2689  	return &dsl.FieldDesc{
  2690  		Name: "Read",
  2691  		Type: meta.TypeFloat64,
  2692  		Tags: &dsl.FieldTags{
  2693  			MapConv: ",omitempty",
  2694  		},
  2695  	}
  2696  }
  2697  
  2698  func (f *fieldsDef) MonitorDiskWrite() *dsl.FieldDesc {
  2699  	return &dsl.FieldDesc{
  2700  		Name: "Write",
  2701  		Type: meta.TypeFloat64,
  2702  		Tags: &dsl.FieldTags{
  2703  			MapConv: ",omitempty",
  2704  		},
  2705  	}
  2706  }
  2707  
  2708  func (f *fieldsDef) MonitorRouterIn() *dsl.FieldDesc {
  2709  	return &dsl.FieldDesc{
  2710  		Name: "In",
  2711  		Type: meta.TypeFloat64,
  2712  		Tags: &dsl.FieldTags{
  2713  			MapConv: ",omitempty",
  2714  		},
  2715  	}
  2716  }
  2717  
  2718  func (f *fieldsDef) MonitorRouterOut() *dsl.FieldDesc {
  2719  	return &dsl.FieldDesc{
  2720  		Name: "Out",
  2721  		Type: meta.TypeFloat64,
  2722  		Tags: &dsl.FieldTags{
  2723  			MapConv: ",omitempty",
  2724  		},
  2725  	}
  2726  }
  2727  
  2728  func (f *fieldsDef) MonitorInterfaceSend() *dsl.FieldDesc {
  2729  	return &dsl.FieldDesc{
  2730  		Name: "Send",
  2731  		Type: meta.TypeFloat64,
  2732  		Tags: &dsl.FieldTags{
  2733  			MapConv: ",omitempty",
  2734  		},
  2735  	}
  2736  }
  2737  
  2738  func (f *fieldsDef) MonitorInterfaceReceive() *dsl.FieldDesc {
  2739  	return &dsl.FieldDesc{
  2740  		Name: "Receive",
  2741  		Type: meta.TypeFloat64,
  2742  		Tags: &dsl.FieldTags{
  2743  			MapConv: ",omitempty",
  2744  		},
  2745  	}
  2746  }
  2747  
  2748  func (f *fieldsDef) MonitorFreeDiskSize() *dsl.FieldDesc {
  2749  	return &dsl.FieldDesc{
  2750  		Name: "FreeDiskSize",
  2751  		Type: meta.TypeFloat64,
  2752  		Tags: &dsl.FieldTags{
  2753  			MapConv: ",omitempty",
  2754  		},
  2755  	}
  2756  }
  2757  
  2758  func (f *fieldsDef) MonitorDatabaseTotalMemorySize() *dsl.FieldDesc {
  2759  	return &dsl.FieldDesc{
  2760  		Name: "TotalMemorySize ",
  2761  		Type: meta.TypeFloat64,
  2762  		Tags: &dsl.FieldTags{
  2763  			MapConv: ",omitempty",
  2764  		},
  2765  	}
  2766  }
  2767  
  2768  func (f *fieldsDef) MonitorDatabaseUsedMemorySize() *dsl.FieldDesc {
  2769  	return &dsl.FieldDesc{
  2770  		Name: "UsedMemorySize",
  2771  		Type: meta.TypeFloat64,
  2772  		Tags: &dsl.FieldTags{
  2773  			MapConv: ",omitempty",
  2774  		},
  2775  	}
  2776  }
  2777  
  2778  func (f *fieldsDef) MonitorDatabaseTotalDisk1Size() *dsl.FieldDesc {
  2779  	return &dsl.FieldDesc{
  2780  		Name: "TotalDisk1Size",
  2781  		Type: meta.TypeFloat64,
  2782  		Tags: &dsl.FieldTags{
  2783  			MapConv: ",omitempty",
  2784  		},
  2785  	}
  2786  }
  2787  
  2788  func (f *fieldsDef) MonitorDatabaseUsedDisk1Size() *dsl.FieldDesc {
  2789  	return &dsl.FieldDesc{
  2790  		Name: "UsedDisk1Size",
  2791  		Type: meta.TypeFloat64,
  2792  		Tags: &dsl.FieldTags{
  2793  			MapConv: ",omitempty",
  2794  		},
  2795  	}
  2796  }
  2797  
  2798  func (f *fieldsDef) MonitorDatabaseTotalDisk2Size() *dsl.FieldDesc {
  2799  	return &dsl.FieldDesc{
  2800  		Name: "TotalDisk2Size",
  2801  		Type: meta.TypeFloat64,
  2802  		Tags: &dsl.FieldTags{
  2803  			MapConv: ",omitempty",
  2804  		},
  2805  	}
  2806  }
  2807  
  2808  func (f *fieldsDef) MonitorDatabaseUsedDisk2Size() *dsl.FieldDesc {
  2809  	return &dsl.FieldDesc{
  2810  		Name: "UsedDisk2Size",
  2811  		Type: meta.TypeFloat64,
  2812  		Tags: &dsl.FieldTags{
  2813  			MapConv: ",omitempty",
  2814  		},
  2815  	}
  2816  }
  2817  
  2818  func (f *fieldsDef) MonitorDatabaseBinlogUsedSizeKiB() *dsl.FieldDesc {
  2819  	return &dsl.FieldDesc{
  2820  		Name: "BinlogUsedSizeKiB",
  2821  		Type: meta.TypeFloat64,
  2822  		Tags: &dsl.FieldTags{
  2823  			MapConv: ",omitempty",
  2824  		},
  2825  	}
  2826  }
  2827  
  2828  func (f *fieldsDef) MonitorDatabaseDelayTimeSec() *dsl.FieldDesc {
  2829  	return &dsl.FieldDesc{
  2830  		Name: "DelayTimeSec",
  2831  		Type: meta.TypeFloat64,
  2832  		Tags: &dsl.FieldTags{
  2833  			MapConv: ",omitempty",
  2834  		},
  2835  	}
  2836  }
  2837  
  2838  func (f *fieldsDef) MonitorResponseTimeSec() *dsl.FieldDesc {
  2839  	return &dsl.FieldDesc{
  2840  		Name: "ResponseTimeSec",
  2841  		Type: meta.TypeFloat64,
  2842  		Tags: &dsl.FieldTags{
  2843  			MapConv: ",omitempty",
  2844  		},
  2845  	}
  2846  }
  2847  
  2848  func (f *fieldsDef) MonitorUplinkBPS() *dsl.FieldDesc {
  2849  	return &dsl.FieldDesc{
  2850  		Name: "UplinkBPS",
  2851  		Type: meta.TypeFloat64,
  2852  		Tags: &dsl.FieldTags{
  2853  			MapConv: ",omitempty",
  2854  		},
  2855  	}
  2856  }
  2857  
  2858  func (f *fieldsDef) MonitorDownlinkBPS() *dsl.FieldDesc {
  2859  	return &dsl.FieldDesc{
  2860  		Name: "DownlinkBPS",
  2861  		Type: meta.TypeFloat64,
  2862  		Tags: &dsl.FieldTags{
  2863  			MapConv: ",omitempty",
  2864  		},
  2865  	}
  2866  }
  2867  
  2868  func (f *fieldsDef) MonitorActiveConnections() *dsl.FieldDesc {
  2869  	return &dsl.FieldDesc{
  2870  		Name: "ActiveConnections",
  2871  		Type: meta.TypeFloat64,
  2872  		Tags: &dsl.FieldTags{
  2873  			MapConv: ",omitempty",
  2874  		},
  2875  	}
  2876  }
  2877  
  2878  func (f *fieldsDef) MonitorConnectionsPerSec() *dsl.FieldDesc {
  2879  	return &dsl.FieldDesc{
  2880  		Name: "ConnectionsPerSec",
  2881  		Type: meta.TypeFloat64,
  2882  		Tags: &dsl.FieldTags{
  2883  			MapConv: ",omitempty",
  2884  		},
  2885  	}
  2886  }
  2887  
  2888  func (f *fieldsDef) MonitorLocalRouterReceiveBytesPerSec() *dsl.FieldDesc {
  2889  	return &dsl.FieldDesc{
  2890  		Name: "ReceiveBytesPerSec",
  2891  		Type: meta.TypeFloat64,
  2892  		Tags: &dsl.FieldTags{
  2893  			MapConv: ",omitempty",
  2894  		},
  2895  	}
  2896  }
  2897  
  2898  func (f *fieldsDef) MonitorLocalRouterSendBytesPerSec() *dsl.FieldDesc {
  2899  	return &dsl.FieldDesc{
  2900  		Name: "SendBytesPerSec",
  2901  		Type: meta.TypeFloat64,
  2902  		Tags: &dsl.FieldTags{
  2903  			MapConv: ",omitempty",
  2904  		},
  2905  	}
  2906  }
  2907  
  2908  func (f *fieldsDef) AutoScaleAPIKeyID() *dsl.FieldDesc {
  2909  	return &dsl.FieldDesc{
  2910  		Name: "APIKeyID",
  2911  		Type: meta.TypeString,
  2912  		Tags: &dsl.FieldTags{
  2913  			MapConv: "Status.APIKey.ID",
  2914  		},
  2915  	}
  2916  }
  2917  
  2918  func (f *fieldsDef) AutoScaleZones() *dsl.FieldDesc {
  2919  	return &dsl.FieldDesc{
  2920  		Name: "Zones",
  2921  		Type: meta.TypeStringSlice,
  2922  		Tags: &dsl.FieldTags{
  2923  			MapConv: "Settings.Zones",
  2924  		},
  2925  	}
  2926  }
  2927  
  2928  func (f *fieldsDef) AutoScaleConfig() *dsl.FieldDesc {
  2929  	return &dsl.FieldDesc{
  2930  		Name: "Config",
  2931  		Type: meta.TypeString,
  2932  		Tags: &dsl.FieldTags{
  2933  			MapConv: "Settings.Config",
  2934  		},
  2935  	}
  2936  }
  2937  
  2938  func (f *fieldsDef) AutoScaleDisabled() *dsl.FieldDesc {
  2939  	return &dsl.FieldDesc{
  2940  		Name: "Disabled",
  2941  		Type: meta.TypeFlag,
  2942  		Tags: &dsl.FieldTags{
  2943  			MapConv: "Settings.Disabled",
  2944  		},
  2945  	}
  2946  }
  2947  func (f *fieldsDef) AutoScaleTriggerType() *dsl.FieldDesc {
  2948  	return &dsl.FieldDesc{
  2949  		Name: "TriggerType",
  2950  		Type: meta.Static(types.EAutoScaleTriggerType("")),
  2951  		Tags: &dsl.FieldTags{
  2952  			MapConv: "Settings.TriggerType",
  2953  		},
  2954  	}
  2955  }
  2956  
  2957  func (f *fieldsDef) AutoScaleCPUThreshold() *dsl.FieldDesc {
  2958  	return &dsl.FieldDesc{
  2959  		Name: "CPUThresholdScaling",
  2960  		Type: &dsl.Model{
  2961  			Name:      "AutoScaleCPUThresholdScaling",
  2962  			NakedType: meta.Static(naked.AutoScaleCPUThresholdScaling{}),
  2963  			Fields: []*dsl.FieldDesc{
  2964  				fields.Def("ServerPrefix", meta.TypeString),
  2965  				fields.Def("Up", meta.TypeInt),
  2966  				fields.Def("Down", meta.TypeInt),
  2967  			},
  2968  		},
  2969  		Tags: &dsl.FieldTags{
  2970  			MapConv: "Settings.CPUThresholdScaling,recursive",
  2971  		},
  2972  	}
  2973  }
  2974  
  2975  func (f *fieldsDef) AutoScaleRouterThreshold() *dsl.FieldDesc {
  2976  	return &dsl.FieldDesc{
  2977  		Name: "RouterThresholdScaling",
  2978  		Type: &dsl.Model{
  2979  			Name:      "AutoScaleRouterThresholdScaling",
  2980  			NakedType: meta.Static(naked.AutoScaleRouterThresholdScaling{}),
  2981  			Fields: []*dsl.FieldDesc{
  2982  				fields.Def("RouterPrefix", meta.TypeString),
  2983  				fields.Def("Direction", meta.TypeString),
  2984  				fields.Def("Mbps", meta.TypeInt),
  2985  			},
  2986  		},
  2987  		Tags: &dsl.FieldTags{
  2988  			MapConv: "Settings.RouterThresholdScaling,recursive",
  2989  		},
  2990  	}
  2991  }
  2992  
  2993  func (f *fieldsDef) AutoScaleScheduleScaling() *dsl.FieldDesc {
  2994  	return &dsl.FieldDesc{
  2995  		Name: "ScheduleScaling",
  2996  		Type: &dsl.Model{
  2997  			Name:      "AutoScaleScheduleScaling",
  2998  			IsArray:   true,
  2999  			NakedType: meta.Static(naked.AutoScaleScheduleScaling{}),
  3000  			Fields: []*dsl.FieldDesc{
  3001  				fields.Def("Action", meta.Static(types.EAutoScaleAction(""))),
  3002  				fields.Def("Hour", meta.TypeInt),
  3003  				fields.Def("Minute", meta.TypeInt),
  3004  				fields.Def("DayOfWeek", meta.Static([]types.EDayOfTheWeek{})),
  3005  			},
  3006  		},
  3007  		Tags: &dsl.FieldTags{
  3008  			MapConv: "Settings.ScheduleScaling,recursive",
  3009  		},
  3010  	}
  3011  }