github.com/sacloud/iaas-api-go@v1.12.0/customize_gslb.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 iaas
    16  
    17  type GSLBServers []*GSLBServer
    18  
    19  // NewGSLBServer GSLB実サーバの作成
    20  func NewGSLBServer(ip string) *GSLBServer {
    21  	return &GSLBServer{
    22  		IPAddress: ip,
    23  		Enabled:   true,
    24  		Weight:    1,
    25  	}
    26  }
    27  
    28  // AddGSLBServer サーバの追加
    29  func (o *GSLBServers) Add(server *GSLBServer) {
    30  	if o.Exist(server) {
    31  		return // noop if already exists
    32  	}
    33  	*o = append(*o, server)
    34  }
    35  
    36  // Exist サーバの存在確認
    37  func (o *GSLBServers) Exist(server *GSLBServer) bool {
    38  	for _, s := range *o {
    39  		if s.IPAddress == server.IPAddress {
    40  			return true
    41  		}
    42  	}
    43  	return false
    44  }
    45  
    46  // ExistAt サーバの存在確認
    47  func (o *GSLBServers) ExistAt(ip string) bool {
    48  	return o.Exist(NewGSLBServer(ip))
    49  }
    50  
    51  // Find サーバの検索
    52  func (o *GSLBServers) Find(server *GSLBServer) *GSLBServer {
    53  	for _, s := range *o {
    54  		if s.IPAddress == server.IPAddress {
    55  			return s
    56  		}
    57  	}
    58  	return nil
    59  }
    60  
    61  // FindAt サーバの検索
    62  func (o *GSLBServers) FindAt(ip string) *GSLBServer {
    63  	return o.Find(NewGSLBServer(ip))
    64  }
    65  
    66  // Update サーバの更新
    67  func (o *GSLBServers) Update(old *GSLBServer, new *GSLBServer) {
    68  	for _, s := range *o {
    69  		if s.IPAddress == old.IPAddress {
    70  			*s = *new
    71  			return
    72  		}
    73  	}
    74  }
    75  
    76  // UpdateAt サーバの更新
    77  func (o *GSLBServers) UpdateAt(ip string, new *GSLBServer) {
    78  	o.Update(NewGSLBServer(ip), new)
    79  }
    80  
    81  // Delete サーバの削除
    82  func (o *GSLBServers) Delete(server *GSLBServer) {
    83  	var res []*GSLBServer
    84  	for _, s := range *o {
    85  		if s.IPAddress != server.IPAddress {
    86  			res = append(res, s)
    87  		}
    88  	}
    89  	*o = res
    90  }
    91  
    92  // DeleteAt サーバの削除
    93  func (o *GSLBServers) DeleteAt(ip string) {
    94  	o.Delete(NewGSLBServer(ip))
    95  }