<commit_before>package sacloud

import (
	"crypto/x509"
	"encoding/json"
	"encoding/pem"
	"fmt"
	"strconv"
	"strings"
	"time"
)

// ProxyLB ProxyLB(CommonServiceItem)
type ProxyLB struct {
	*Resource        // ID
	propName         // 名称
	propDescription  // 説明
	propServiceClass // サービスクラス
	propIcon         // アイコン
	propTags         // タグ
	propCreatedAt    // 作成日時
	propModifiedAt   // 変更日時
	propAvailability // 有効状態

	Status   *ProxyLBStatus  `json:",omitempty"` // ステータス
	Provider ProxyLBProvider `json:",omitempty"` // プロバイダ
	Settings ProxyLBSettings `json:",omitempty"` // ProxyLB設定

}

// ProxyLBSettings ProxyLB設定
type ProxyLBSettings struct {
	ProxyLB ProxyLBSetting `json:",omitempty"` // ProxyLB ProxyLBエントリー
}

// ProxyLBStatus ProxyLBステータス
type ProxyLBStatus struct {
	FQDN             string   `json:",omitempty"` // 割り当てられたFQDN(site-*******.proxylb?.sakura.ne.jp) UseVIPFailoverがtrueの場合のみ有効
	VirtualIPAddress string   `json:",omitempty"` // 割り当てられたVIP UseVIPFailoverがfalseの場合のみ有効
	ProxyNetworks    []string `json:",omitempty"` // プロキシ元ネットワークアドレス(CIDR)
	UseVIPFailover   bool     // VIPフェイルオーバ
}

// ProxyLBProvider プロバイダ
type ProxyLBProvider struct {
	Class string `json:",omitempty"` // クラス
}

// CreateNewProxyLB ProxyLB作成
func CreateNewProxyLB(name string) *ProxyLB {
	return &ProxyLB{
		Resource: &Resource{},
		propName: propName{Name: name},
		Provider: ProxyLBProvider{
			Class: "proxylb",
		},
		Settings: ProxyLBSettings{
			ProxyLB: ProxyLBSetting{
				HealthCheck: defaultProxyLBHealthCheck,
				SorryServer: ProxyLBSorryServer{},
				Servers:     []ProxyLBServer{},
			},
		},
	}
}

// ProxyLBPlan ProxyLBプラン
type ProxyLBPlan int

var (
	// ProxyLBPlan100 100cpsプラン
	ProxyLBPlan100 = ProxyLBPlan(100)
	// ProxyLBPlan500 500cpsプラン
	ProxyLBPlan500 = ProxyLBPlan(500)
	// ProxyLBPlan1000 1,000cpsプラン
	ProxyLBPlan1000 = ProxyLBPlan(1000)
	// ProxyLBPlan5000 5,000cpsプラン
	ProxyLBPlan5000 = ProxyLBPlan(5000)
	// ProxyLBPlan10000 10,000cpsプラン
	ProxyLBPlan10000 = ProxyLBPlan(10000)
	// ProxyLBPlan50000 50,000cpsプラン
	ProxyLBPlan50000 = ProxyLBPlan(50000)
	// ProxyLBPlan100000 100,000cpsプラン
	ProxyLBPlan100000 = ProxyLBPlan(100000)
)

// AllowProxyLBPlans 有効なプランIDリスト
var AllowProxyLBPlans = []int{<commit_msg>Add 100/500 plans to plan list<commit_after>package sacloud

import (
	"crypto/x509"
	"encoding/json"
	"encoding/pem"
	"fmt"
	"strconv"
	"strings"
	"time"
)

// ProxyLB ProxyLB(CommonServiceItem)
type ProxyLB struct {
	*Resource        // ID
	propName         // 名称
	propDescription  // 説明
	propServiceClass // サービスクラス
	propIcon         // アイコン
	propTags         // タグ
	propCreatedAt    // 作成日時
	propModifiedAt   // 変更日時
	propAvailability // 有効状態

	Status   *ProxyLBStatus  `json:",omitempty"` // ステータス
	Provider ProxyLBProvider `json:",omitempty"` // プロバイダ
	Settings ProxyLBSettings `json:",omitempty"` // ProxyLB設定

}

// ProxyLBSettings ProxyLB設定
type ProxyLBSettings struct {
	ProxyLB ProxyLBSetting `json:",omitempty"` // ProxyLB ProxyLBエントリー
}

// ProxyLBStatus ProxyLBステータス
type ProxyLBStatus struct {
	FQDN             string   `json:",omitempty"` // 割り当てられたFQDN(site-*******.proxylb?.sakura.ne.jp) UseVIPFailoverがtrueの場合のみ有効
	VirtualIPAddress string   `json:",omitempty"` // 割り当てられたVIP UseVIPFailoverがfalseの場合のみ有効
	ProxyNetworks    []string `json:",omitempty"` // プロキシ元ネットワークアドレス(CIDR)
	UseVIPFailover   bool     // VIPフェイルオーバ
}

// ProxyLBProvider プロバイダ
type ProxyLBProvider struct {
	Class string `json:",omitempty"` // クラス
}

// CreateNewProxyLB ProxyLB作成
func CreateNewProxyLB(name string) *ProxyLB {
	return &ProxyLB{
		Resource: &Resource{},
		propName: propName{Name: name},
		Provider: ProxyLBProvider{
			Class: "proxylb",
		},
		Settings: ProxyLBSettings{
			ProxyLB: ProxyLBSetting{
				HealthCheck: defaultProxyLBHealthCheck,
				SorryServer: ProxyLBSorryServer{},
				Servers:     []ProxyLBServer{},
			},
		},
	}
}

// ProxyLBPlan ProxyLBプラン
type ProxyLBPlan int

var (
	// ProxyLBPlan100 100cpsプラン
	ProxyLBPlan100 = ProxyLBPlan(100)
	// ProxyLBPlan500 500cpsプラン
	ProxyLBPlan500 = ProxyLBPlan(500)
	// ProxyLBPlan1000 1,000cpsプラン
	ProxyLBPlan1000 = ProxyLBPlan(1000)
	// ProxyLBPlan5000 5,000cpsプラン
	ProxyLBPlan5000 = ProxyLBPlan(5000)
	// ProxyLBPlan10000 10,000cpsプラン
	ProxyLBPlan10000 = ProxyLBPlan(10000)
	// ProxyLBPlan50000 50,000cpsプラン
	ProxyLBPlan50000 = ProxyLBPlan(50000)
	// ProxyLBPlan100000 100,000cpsプラン
	ProxyLBPlan100000 = ProxyLBPlan(100000)
)

// AllowProxyLBPlans 有効なプランIDリスト
var AllowProxyLBPlans = []int{
	int(ProxyLBPlan100),
	int(ProxyLBPlan500),
{'fraction_non_alphanumeric': 0.10899845235463188, 'fraction_numerical': 0.0570417864249392, 'mean_word_length': 4.135073779795687, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1503220', 'n_tokens_mistral': 2183, 'n_tokens_neox': 1853, 'n_words': 310}