db

package
v0.26.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 10, 2026 License: GPL-3.0 Imports: 24 Imported by: 0

README

marmotのetcdをアクセスする

パッケージのテストを実行する

$ go mod init dbaccess
$ go mod tidy
$ go test -v .
$ etcdctl get se --prefix
serial
{"Serial":20}

キー

旧キーと新キーの比較を整理しておく。 旧キーを廃止して、新キーに移行する。 シーケンス番号は廃止の方向で、UUIDを信頼して、UUIDへ移行する。ただし、重複チェックを入れること

旧Key 新Key 説明
hv /marmot/hypervisor/key ハイパーバイザーの情報、ノード名、資源の量、使用状態など
vm /marmot/vristualmachine/key 仮想マシンの情報、VM名、資源割当量、稼働状態など
OSI_ /marmot/osimage/key OSのイメージテンプレート、名前、ラベル、OSバージョン、生成日、更新日など
N/A /marmot/volume/key データボリューム、名前、ラベル、容量、ファイル名、生成日、更新日など
SEQNO_ /marmot/sequence/key シリアル番号の管理用(廃止予定)
version /marmot/version marmotのバージョン番号

参考資料

Documentation

Index

Constants

View Source
const (
	BootstrapAdminUserID   = "admin"
	BootstrapAdminPassword = "passw0rd"
	BootstrapAdminRoleName = "Administrator"
	BootstrapAdminComment  = "bootstrap administrator"
)
View Source
const (
	AuthUserPrefix           = "/marmot/user"
	AuthRolePrefix           = "/marmot/role"
	AuthUserApiKeyPrefix     = "/marmot/user-apikey"
	AuthApiKeyIndexPrefix    = "/marmot/apikey-index"
	AuthApiKeyTokenPrefixLen = 8
	AuthSessionIdleTimeout   = 30 * time.Minute
	ApiKeySessionTypeLogin   = "login"
)
View Source
const (
	// ETCD Keyのプレフィックス
	OsTemplateImagePrefix     = "/marmot/osTemplateImage"
	VolumePrefix              = "/marmot/volume"
	ServerPrefix              = "/marmot/server"
	ImagePrefix               = "/marmot/image"
	NetworkPrefix             = "/marmot/network"
	GatewayPrefix             = "/marmot/gateway"
	VpnGatewayPrefix          = "/marmot/vpn-gateway"
	LoadBalancerPrefix        = "/marmot/application-load-balancer"
	NetworkLoadBalancerPrefix = "/marmot/network-load-balancer"
	SeqPrefix                 = "/marmot/sequence"
	VersionKey                = "/marmot/version"
	JobPrefix                 = "/marmot/job"
	InternalDNSPrefix         = "/marmot/dns"
	// エラーメッセージ
	ErrAlreadyExists           = "Network with the same AddressMaskLen already exists"
	ErrOverlapsExistingNetwork = "overlaps with an existing network"
)
View Source
const (
	DefaultOSVolumeGroup   = "vg1"
	DefaultDataVolumeGroup = "vg2"
)
View Source
const (
	GATEWAY_PENDING      = 0
	GATEWAY_PROVISIONING = 1
	GATEWAY_CONFIGURING  = 2
	GATEWAY_ACTIVE       = 3
	GATEWAY_FAILED       = 4
	GATEWAY_DELETING     = 5

	GatewayLabelManagedServerID = "gatewayServerId"
	GatewayLabelManagedBy       = "managedBy"
	GatewayLabelManagedByValue  = "gateway-controller"
	GatewayServerLabelGatewayID = "gatewayId"
	GatewayServerLabelRole      = "role"
	GatewayServerLabelRoleValue = "gateway"
	GatewayLabelAnsibleRetries  = "ansibleRetries"
	GatewayLabelAppliedConfig   = "appliedConfigHash"
)
View Source
const (
	IMAGE_PENDING         = 0 // 待ち状態
	IMAGE_CREATING        = 1 // プロビジョニング中
	IMAGE_CREATION_FAILED = 2 // 問題発生
	IMAGE_AVAILABLE       = 3 // 利用可能
	IMAGE_DELETING        = 4 // 削除中
	IMAGE_DELETED         = 5 // 削除済み
	IMAGE_WAITING         = 6 // ヘッドノードの作成完了待ち

	// Image label keys for distributed sync
	ImageLabelSyncRole     = "syncRole"
	ImageLabelHeadImageID  = "headImageId"
	ImageLabelHeadNodeName = "headNodeName"
	ImageLabelSource       = "source"
	ImageLabelServerID     = "serverId"
)
View Source
const (
	JOB_PENDING   = 0 // 実行待ち
	JOB_RUNNING   = 1 // 実行中
	JOB_CANCELED  = 2 // 削除済み
	JOB_FAILED    = 3 // 失敗終了
	JOB_SUCCEEDED = 4 // 正常終了
	JOB_PATH      = "/var/lib/marmot/jobs"
)
View Source
const (
	LOAD_BALANCER_PENDING      = 0
	LOAD_BALANCER_ACTIVE       = 1
	LOAD_BALANCER_DEGRADED     = 2
	LOAD_BALANCER_FAILED       = 3
	LOAD_BALANCER_DELETING     = 4
	LOAD_BALANCER_PROVISIONING = 5
	LOAD_BALANCER_CONFIGURING  = 6

	LoadBalancerLabelManagedServerID         = "loadBalancerServerId"
	LoadBalancerLabelManagedBy               = "managedBy"
	LoadBalancerLabelManagedByValue          = "load-balancer-controller"
	LoadBalancerServerLabelID                = "loadBalancerId"
	LoadBalancerServerLabelRole              = "role"
	LoadBalancerServerLabelRoleValue         = "load-balancer"
	LoadBalancerLabelAnsibleRetries          = "ansibleRetries"
	LoadBalancerLabelAppliedConfig           = "appliedConfigHash"
	LoadBalancerLabelStagedConfig            = "stagedConfigHash"
	LoadBalancerLabelStagedConfigAt          = "stagedConfigAt"
	LoadBalancerLabelAgentStateReadFailures  = "agentStateReadFailures"
	LoadBalancerLabelAgentStateReadSuccesses = "agentStateReadSuccesses"
)
View Source
const (
	NETWORK_LOAD_BALANCER_PENDING      = 0
	NETWORK_LOAD_BALANCER_ACTIVE       = 1
	NETWORK_LOAD_BALANCER_DEGRADED     = 2
	NETWORK_LOAD_BALANCER_FAILED       = 3
	NETWORK_LOAD_BALANCER_DELETING     = 4
	NETWORK_LOAD_BALANCER_PROVISIONING = 5
	NETWORK_LOAD_BALANCER_CONFIGURING  = 6

	NetworkLoadBalancerLabelManagedServerID         = "networkLoadBalancerServerId"
	NetworkLoadBalancerLabelManagedBy               = "managedBy"
	NetworkLoadBalancerLabelManagedByValue          = "network-load-balancer-controller"
	NetworkLoadBalancerServerLabelID                = "networkLoadBalancerId"
	NetworkLoadBalancerServerLabelRole              = "role"
	NetworkLoadBalancerServerLabelRoleValue         = "network-load-balancer"
	NetworkLoadBalancerLabelAnsibleRetries          = "ansibleRetries"
	NetworkLoadBalancerLabelAppliedConfig           = "appliedConfigHash"
	NetworkLoadBalancerLabelStagedConfig            = "stagedConfigHash"
	NetworkLoadBalancerLabelStagedConfigAt          = "stagedConfigAt"
	NetworkLoadBalancerLabelAgentStateReadFailures  = "agentStateReadFailures"
	NetworkLoadBalancerLabelAgentStateReadSuccesses = "agentStateReadSuccesses"
)
View Source
const (
	SERVER_PENDING      = 0 // 待ち状態
	SERVER_PROVISIONING = 1 // プロビジョニング中
	SERVER_RUNNING      = 2 // 実行中
	SERVER_STOPPED      = 3 // 停止中
	SERVER_ERROR        = 4 // エラー状態
	SERVER_DELETING     = 5 // 削除中
	SERVER_STOPPING     = 6 // 停止処理中
	SERVER_STARTING     = 7 // 起動処理中
)
View Source
const (
	NETWORK_PENDING      = 0 // 待ち状態
	NETWORK_PROVISIONING = 1 // プロビジョニング中
	NETWORK_ACTIVE       = 2 // 活性中
	NETWORK_INACTIVE     = 3 // 不活性中
	NETWORK_ERROR        = 4 // エラー状態
	NETWORK_DELETING     = 5 // 削除中
	NETWORK_WAITING      = 6 // ヘッドノードの作成完了待ち
	NETWORK_DEL_PENDING  = 7 // 依存リソース削除待ち

	// Network label keys for distributed sync
	NetworkLabelSyncRole      = "syncRole"
	NetworkLabelHeadNetworkID = "headNetworkId"
	NetworkLabelHeadNodeName  = "headNodeName"
)
View Source
const (
	VOLUME_PENDING      = 0 // 待ち状態
	VOLUME_PROVISIONING = 1 // プロビジョニング中
	VOLUME_ERROR        = 2 // 問題発生
	VOLUME_AVAILABLE    = 3 // 利用可能
	VOLUME_DELETING     = 4 // 削除中
	VOLUME_UNAVAILABLE  = 5 // 実体欠損

)
View Source
const (
	VPN_GATEWAY_PENDING      = 0
	VPN_GATEWAY_ACTIVE       = 1
	VPN_GATEWAY_FAILED       = 2
	VPN_GATEWAY_DELETING     = 3
	VPN_GATEWAY_PROVISIONING = 4
	VPN_GATEWAY_CONFIGURING  = 5

	VpnGatewayLabelManagedServerID = "vpnGatewayServerId"
	VpnGatewayLabelManagedBy       = "managedBy"
	VpnGatewayLabelManagedByValue  = "vpn-gateway-controller"
	VpnGatewayServerLabelGatewayID = "vpnGatewayId"
	VpnGatewayServerLabelRole      = "role"
	VpnGatewayServerLabelRoleValue = "vpn-gateway"
	VpnGatewayLabelAnsibleRetries  = "ansibleRetries"
	VpnGatewayLabelAppliedConfig   = "appliedConfigHash"
)
View Source
const (
	HostStatusPrefix = "/marmot/hoststatus"
)

Variables

View Source
var (
	ErrNotFound       = errors.New("not found")
	ErrUpdateConflict = errors.New("update conflict")
	ErrFound          = errors.New("found")
)
View Source
var ErrInvalidCredentials = errors.New("invalid credentials")
View Source
var ErrUserDisabled = errors.New("user is disabled")
View Source
var ErrUserLocked = errors.New("user is locked")
View Source
var GatewayStatus = map[int]string{
	0: "PENDING",
	1: "PROVISIONING",
	2: "CONFIGURING",
	3: "ACTIVE",
	4: "FAILED",
	5: "DELETING",
}
View Source
var ImageStatus = map[int]string{
	0: "PENDING",
	1: "CREATING",
	2: "FAILED",
	3: "AVAILABLE",
	4: "DELETING",
	5: "DELETED",
	6: "WAITING",
}
View Source
var JobStatus = map[int]string{
	0: "PENDING",
	1: "RUNNING",
	2: "CANCELED",
	3: "FAILED",
	4: "SUCCEEDED",
}
View Source
var LoadBalancerStatus = map[int]string{
	0: "PENDING",
	1: "ACTIVE",
	2: "DEGRADED",
	3: "FAILED",
	4: "DELETING",
	5: "PROVISIONING",
	6: "CONFIGURING",
}
View Source
var NetworkLoadBalancerStatus = map[int]string{
	0: "PENDING",
	1: "ACTIVE",
	2: "DEGRADED",
	3: "FAILED",
	4: "DELETING",
	5: "PROVISIONING",
	6: "CONFIGURING",
}
View Source
var NetworkStatus = map[int]string{
	0: "PENDING",
	1: "PROVISIONING",
	2: "ACTIVE",
	3: "INACTIVE",
	4: "ERROR",
	5: "DELETING",
	6: "WAITING",
	7: "DEL-PENDING",
}
View Source
var ServerStatus = map[int]string{
	0: "PENDING",
	1: "PROVISIONING",
	2: "RUNNING",
	3: "STOPPED",
	4: "ERROR",
	5: "DELETING",
	6: "STOPPING",
	7: "STARTING",
}
View Source
var VolStatus = map[int]string{
	0: "PENDING",
	1: "PROVISIONING",
	2: "ERROR",
	3: "AVAILABLE",
	4: "DELETING",
	5: "UNAVAILABLE",
}
View Source
var VpnGatewayStatus = map[int]string{
	0: "PENDING",
	1: "ACTIVE",
	2: "FAILED",
	3: "DELETING",
	4: "PROVISIONING",
	5: "CONFIGURING",
}

Functions

func GetFollowerSyncRole added in v0.12.0

func GetFollowerSyncRole(labels map[string]interface{}) string

GetFollowerSyncRole はラベルから syncRole を取得する

func GetGatewayAnsibleRetries added in v0.16.0

func GetGatewayAnsibleRetries(labels map[string]interface{}) int

func GetGatewayAppliedConfigHash added in v0.16.0

func GetGatewayAppliedConfigHash(labels map[string]interface{}) string

func GetGatewayManagedServerID added in v0.16.0

func GetGatewayManagedServerID(labels map[string]interface{}) string

func GetHeadImageID added in v0.12.0

func GetHeadImageID(labels map[string]interface{}) string

GetHeadImageID はラベルから headImageId を取得する

func GetHeadNetworkID added in v0.12.0

func GetHeadNetworkID(labels map[string]interface{}) string

func GetHeadNetworkNodeName added in v0.12.0

func GetHeadNetworkNodeName(labels map[string]interface{}) string

func GetHeadNodeName added in v0.12.0

func GetHeadNodeName(labels map[string]interface{}) string

GetHeadNodeName はラベルから headNodeName を取得する

func GetImageServerID added in v0.12.0

func GetImageServerID(labels map[string]interface{}) string

GetImageServerID はラベルから serverId を取得する

func GetImageSource added in v0.12.0

func GetImageSource(labels map[string]interface{}) string

GetImageSource はラベルから source を取得する

func GetLoadBalancerAgentStateReadFailures added in v0.19.0

func GetLoadBalancerAgentStateReadFailures(labels map[string]interface{}) int

func GetLoadBalancerAgentStateReadSuccesses added in v0.19.0

func GetLoadBalancerAgentStateReadSuccesses(labels map[string]interface{}) int

func GetLoadBalancerAnsibleRetries added in v0.19.0

func GetLoadBalancerAnsibleRetries(labels map[string]interface{}) int

func GetLoadBalancerAppliedConfigHash added in v0.19.0

func GetLoadBalancerAppliedConfigHash(labels map[string]interface{}) string

func GetLoadBalancerManagedServerID added in v0.19.0

func GetLoadBalancerManagedServerID(labels map[string]interface{}) string

func GetLoadBalancerStagedConfigAt added in v0.19.0

func GetLoadBalancerStagedConfigAt(labels map[string]interface{}) time.Time

func GetLoadBalancerStagedConfigHash added in v0.19.0

func GetLoadBalancerStagedConfigHash(labels map[string]interface{}) string

func GetNetworkLoadBalancerAgentStateReadFailures added in v0.20.0

func GetNetworkLoadBalancerAgentStateReadFailures(labels map[string]interface{}) int

func GetNetworkLoadBalancerAgentStateReadSuccesses added in v0.20.0

func GetNetworkLoadBalancerAgentStateReadSuccesses(labels map[string]interface{}) int

func GetNetworkLoadBalancerAnsibleRetries added in v0.20.0

func GetNetworkLoadBalancerAnsibleRetries(labels map[string]interface{}) int

func GetNetworkLoadBalancerAppliedConfigHash added in v0.20.0

func GetNetworkLoadBalancerAppliedConfigHash(labels map[string]interface{}) string

func GetNetworkLoadBalancerManagedServerID added in v0.20.0

func GetNetworkLoadBalancerManagedServerID(labels map[string]interface{}) string

func GetNetworkLoadBalancerStagedConfigAt added in v0.20.0

func GetNetworkLoadBalancerStagedConfigAt(labels map[string]interface{}) time.Time

func GetNetworkLoadBalancerStagedConfigHash added in v0.20.0

func GetNetworkLoadBalancerStagedConfigHash(labels map[string]interface{}) string

func GetNetworkSyncRole added in v0.12.0

func GetNetworkSyncRole(labels map[string]interface{}) string

func GetVpnGatewayAnsibleRetries added in v0.17.0

func GetVpnGatewayAnsibleRetries(labels map[string]interface{}) int

func GetVpnGatewayAppliedConfigHash added in v0.17.0

func GetVpnGatewayAppliedConfigHash(labels map[string]interface{}) string

func GetVpnGatewayManagedServerID added in v0.17.0

func GetVpnGatewayManagedServerID(labels map[string]interface{}) string

func PrefixLenToMask added in v0.11.0

func PrefixLenToMask(bits int, isIPv6 bool) (string, error)

PrefixLenToMask はプレフィックス長からネットマスク文字列を生成する(IPv4/IPv6 対応) isIPv6 が false なら IPv4 (0〜32)、true なら IPv6 (0〜128)

func SetDebugMode added in v0.24.0

func SetDebugMode(enabled bool)

SetDebugMode toggles debug-only prints in pkg/db.

func SetDefaultVolumeGroups added in v0.11.5

func SetDefaultVolumeGroups(osVolumeGroup, dataVolumeGroup string)

func SetFollowerSyncLabels added in v0.12.0

func SetFollowerSyncLabels(labels map[string]interface{}, syncRole, headImageID, headNodeName string)

SetFollowerSyncLabels は follower イメージの sync 情報をラベルに設定する

func SetGatewayAnsibleRetries added in v0.16.0

func SetGatewayAnsibleRetries(labels map[string]interface{}, retries int)

func SetGatewayAppliedConfigHash added in v0.16.0

func SetGatewayAppliedConfigHash(labels map[string]interface{}, hash string)

func SetGatewayManagedServerID added in v0.16.0

func SetGatewayManagedServerID(labels map[string]interface{}, serverID string)

func SetImageSourceLabels added in v0.12.0

func SetImageSourceLabels(labels map[string]interface{}, source string, serverID string)

SetImageSourceLabels は image source 情報をラベルに設定する

func SetLoadBalancerAgentStateReadFailures added in v0.19.0

func SetLoadBalancerAgentStateReadFailures(labels map[string]interface{}, failures int)

func SetLoadBalancerAgentStateReadSuccesses added in v0.19.0

func SetLoadBalancerAgentStateReadSuccesses(labels map[string]interface{}, successes int)

func SetLoadBalancerAnsibleRetries added in v0.19.0

func SetLoadBalancerAnsibleRetries(labels map[string]interface{}, retries int)

func SetLoadBalancerAppliedConfigHash added in v0.19.0

func SetLoadBalancerAppliedConfigHash(labels map[string]interface{}, hash string)

func SetLoadBalancerManagedServerID added in v0.19.0

func SetLoadBalancerManagedServerID(labels map[string]interface{}, serverID string)

func SetLoadBalancerStagedConfigAt added in v0.19.0

func SetLoadBalancerStagedConfigAt(labels map[string]interface{}, at time.Time)

func SetLoadBalancerStagedConfigHash added in v0.19.0

func SetLoadBalancerStagedConfigHash(labels map[string]interface{}, hash string)

func SetNetworkLoadBalancerAgentStateReadFailures added in v0.20.0

func SetNetworkLoadBalancerAgentStateReadFailures(labels map[string]interface{}, failures int)

func SetNetworkLoadBalancerAgentStateReadSuccesses added in v0.20.0

func SetNetworkLoadBalancerAgentStateReadSuccesses(labels map[string]interface{}, successes int)

func SetNetworkLoadBalancerAnsibleRetries added in v0.20.0

func SetNetworkLoadBalancerAnsibleRetries(labels map[string]interface{}, retries int)

func SetNetworkLoadBalancerAppliedConfigHash added in v0.20.0

func SetNetworkLoadBalancerAppliedConfigHash(labels map[string]interface{}, hash string)

func SetNetworkLoadBalancerManagedServerID added in v0.20.0

func SetNetworkLoadBalancerManagedServerID(labels map[string]interface{}, serverID string)

func SetNetworkLoadBalancerStagedConfigAt added in v0.20.0

func SetNetworkLoadBalancerStagedConfigAt(labels map[string]interface{}, at time.Time)

func SetNetworkLoadBalancerStagedConfigHash added in v0.20.0

func SetNetworkLoadBalancerStagedConfigHash(labels map[string]interface{}, hash string)

func SetNetworkSyncLabels added in v0.12.0

func SetNetworkSyncLabels(labels map[string]interface{}, syncRole, headNetworkID, headNodeName string)

SetNetworkSyncLabels sets distributed sync metadata labels for networks.

func SetVpnGatewayAnsibleRetries added in v0.17.0

func SetVpnGatewayAnsibleRetries(labels map[string]interface{}, retries int)

func SetVpnGatewayAppliedConfigHash added in v0.17.0

func SetVpnGatewayAppliedConfigHash(labels map[string]interface{}, hash string)

func SetVpnGatewayManagedServerID added in v0.17.0

func SetVpnGatewayManagedServerID(labels map[string]interface{}, serverID string)

Types

type Database added in v0.8.7

type Database struct {
	Cli     *etcd.Client
	Ctx     context.Context
	Session *concurrency.Session
	Mutex   *concurrency.Mutex
}

func NewDatabase added in v0.8.7

func NewDatabase(url string) (*Database, error)

func (*Database) AddUserRole added in v0.25.0

func (d *Database) AddUserRole(userID, roleName string) error

AddUserRole assigns a role to a user.

func (*Database) AllocateIP added in v0.11.0

func (d *Database) AllocateIP(vnetId, ipnetId, hostId string) (string, int, error)

IPネットワークのIDをセットして、そのネットワークからIPアドレスを一つ割り当てる。 取得したIPアドレスは、仮想マシンやコンテナのネットワーク設定に使用される。 渡したホストIDは、このホストによって使用中であることを示すために使用される。

func (*Database) AssignNodeToServer added in v0.12.0

func (d *Database) AssignNodeToServer(id, nodeName string) error

AssignNodeToServer は NodeName 未設定のサーバーに対して nodeName を割り当てる。 既に割り当て済みの場合は何もしない。 etcd の CAS を利用して競合を防ぐ。

func (*Database) AuthenticateApiKey added in v0.25.0

func (d *Database) AuthenticateApiKey(token string) (api.User, api.ApiKey, error)

AuthenticateApiKey resolves a bearer token to its user and API key.

func (*Database) AuthenticateUser added in v0.25.0

func (d *Database) AuthenticateUser(userID, password string) (api.User, error)

AuthenticateUser validates a password and returns the user on success.

func (*Database) Authorize added in v0.25.0

func (d *Database) Authorize(userID, resource, verb string) (bool, error)

Authorize checks whether a user may perform a verb on a resource.

func (*Database) CheckIPaddrInUse added in v0.11.0

func (d *Database) CheckIPaddrInUse(vnetId, ipnetId, ip string) (bool, error)

IPアドレスが存在するかどうかをチェックする

func (*Database) CheckIPnetInUse added in v0.11.0

func (d *Database) CheckIPnetInUse(vnetId, ipnetId string) (bool, error)

この仮想ネットワークに関連づいているIPネットワークが使用中かどうかをチェックする

func (*Database) CleanupRevokedApiKeysOlderThan added in v0.25.0

func (d *Database) CleanupRevokedApiKeysOlderThan(olderThan time.Duration) (int, error)

CleanupRevokedApiKeysOlderThan physically deletes revoked API keys whose RevokedAt is older than the threshold.

func (*Database) Close added in v0.9.1

func (d *Database) Close() error

func (*Database) CountGatewayByPublicIP added in v0.16.0

func (d *Database) CountGatewayByPublicIP(publicIP string) (int, error)

CountGatewayByPublicIP counts gateways that use the specified bind public IP.

func (*Database) CreateAnyIpNetwork added in v0.11.0

func (d *Database) CreateAnyIpNetwork(vnetid string) (string, error)

IPネットワークアドレスを無指定で、自動生成して永続化する 戻り値は、ネットワークIDなどの識別子

func (*Database) CreateGateway added in v0.16.0

func (d *Database) CreateGateway(spec api.Gateway) (api.Gateway, error)

CreateGateway stores a gateway object in etcd with a generated ID and PENDING status.

func (*Database) CreateIpNetwork added in v0.11.0

func (d *Database) CreateIpNetwork(vnetid string, spec *api.IPNetwork) (string, error)

IPネットワークアドレス、サブネットマスク、ゲートウェイなどを作成して、etcdに永続化する 戻り値は、ネットワークIDなどの識別子、エラー時でもIDを返す

func (*Database) CreateLoadBalancer added in v0.19.0

func (d *Database) CreateLoadBalancer(spec api.ApplicationLoadBalancer) (api.ApplicationLoadBalancer, error)

func (*Database) CreateNetworkLoadBalancer added in v0.20.0

func (d *Database) CreateNetworkLoadBalancer(spec api.NetworkLoadBalancer) (api.NetworkLoadBalancer, error)

func (*Database) CreateSeq0 added in v0.11.0

func (d *Database) CreateSeq0(key string, start uint64, step uint64) error

シリアル番号

func (*Database) CreateUser added in v0.25.0

func (d *Database) CreateUser(input api.User) (api.User, error)

CreateUser stores a new user entry.

func (*Database) CreateUserApiKey added in v0.25.0

func (d *Database) CreateUserApiKey(userID string, req api.ApiKeyCreateRequest) (api.ApiKey, string, error)

CreateUserApiKey creates a new API key for a user and returns the raw token.

func (*Database) CreateVirtualNetwork added in v0.11.0

func (d *Database) CreateVirtualNetwork(spec api.VirtualNetwork) (api.VirtualNetwork, error)

仮想ネットワークを登録、仮想ネットワークを一意に識別するIDを自動生成

func (*Database) CreateVolumeOnDB2 added in v0.11.0

func (d *Database) CreateVolumeOnDB2(inputVol api.Volume) (*api.Volume, error)

仮想マシンを生成する時にボリュームを生成して、アタッチする OS or DATA ボリュームの作成

func (*Database) CreateVpnGateway added in v0.17.0

func (d *Database) CreateVpnGateway(spec api.VpnGateway) (api.VpnGateway, error)

func (*Database) DelSeqByKey added in v0.9.1

func (d *Database) DelSeqByKey(key string) error

func (*Database) DeleteDnsEntryByName added in v0.11.0

func (d *Database) DeleteDnsEntryByName(hostname, subdomain string) error

ホスト名とドメイン名で、エントリーを削除する。

func (*Database) DeleteGatewayById added in v0.16.0

func (d *Database) DeleteGatewayById(id string) error

DeleteGatewayById deletes a gateway record by ID.

func (*Database) DeleteImage added in v0.11.0

func (d *Database) DeleteImage(id string) error

IDで特定してイメージを削除する

func (*Database) DeleteIpNetworkById added in v0.11.0

func (d *Database) DeleteIpNetworkById(vnetId, ipnetId string) error

IPネットワークアドレスを削除する IPネットワークに割当られたIPがある場合は、削除できないようにする

func (*Database) DeleteJSON added in v0.9.1

func (d *Database) DeleteJSON(key string) error

func (*Database) DeleteLoadBalancerById added in v0.19.0

func (d *Database) DeleteLoadBalancerById(id string) error

func (*Database) DeleteNetworkLoadBalancerById added in v0.20.0

func (d *Database) DeleteNetworkLoadBalancerById(id string) error

func (*Database) DeleteServerById added in v0.9.1

func (d *Database) DeleteServerById(id string) error

サーバーをIDで削除

func (*Database) DeleteUserApiKey added in v0.25.0

func (d *Database) DeleteUserApiKey(userID, apiKeyID string) error

DeleteUserApiKey revokes and removes a user's API key.

func (*Database) DeleteUserById added in v0.25.0

func (d *Database) DeleteUserById(userID string) error

DeleteUserById deletes a user and all of the user's API keys.

func (*Database) DeleteUserRole added in v0.25.0

func (d *Database) DeleteUserRole(userID, roleName string) error

DeleteUserRole removes a role from a user.

func (*Database) DeleteVirtualNetworkById added in v0.11.0

func (d *Database) DeleteVirtualNetworkById(vnetId string) error

仮想ネットワークをIDで削除

func (*Database) DeleteVolume added in v0.9.1

func (d *Database) DeleteVolume(id string) error

データボリュームの削除

func (*Database) DeleteVpnGatewayById added in v0.17.0

func (d *Database) DeleteVpnGatewayById(id string) error

func (*Database) EnsureBootstrapAdmin added in v0.25.0

func (d *Database) EnsureBootstrapAdmin() error

EnsureBootstrapAdmin seeds the default admin user when the auth store is empty. Existing users are never modified.

func (*Database) FindImageByName added in v0.11.0

func (d *Database) FindImageByName(name string) (api.Image, error)

イメージの全リストを返す

func (*Database) FindImageByNameAndNode added in v0.12.0

func (d *Database) FindImageByNameAndNode(name, nodeName string) (api.Image, error)

イメージ名とノード名でイメージを検索する。 NodeName が一致するエントリーのみ返す。

func (*Database) FindVolumeByName added in v0.9.1

func (d *Database) FindVolumeByName(name, kind string) ([]api.Volume, error)

データボリュームの一覧取得

func (*Database) GetAllHostStatus added in v0.11.6

func (d *Database) GetAllHostStatus() ([]api.HostStatus, error)

全HostStatusをetcdから取得する

func (*Database) GetAllocatedIPs added in v0.11.0

func (d *Database) GetAllocatedIPs(vnetId, ipnetId string) ([]api.IPAddress, error)

func (*Database) GetByPrefix added in v0.9.1

func (d *Database) GetByPrefix(prefix string) (*etcd.GetResponse, error)

プレフィックス検索で取得

func (*Database) GetDnsEntry added in v0.11.0

func (d *Database) GetDnsEntry(hostname, subdomain string) (string, error)

ホスト名とドメイン名からIPアドレスを取得する

func (*Database) GetGatewayById added in v0.16.0

func (d *Database) GetGatewayById(id string) (api.Gateway, error)

GetGatewayById returns one gateway by ID.

func (*Database) GetGatewayByName added in v0.16.0

func (d *Database) GetGatewayByName(name string) ([]api.Gateway, error)

GetGatewayByName returns gateways matching the given name.

func (*Database) GetGateways added in v0.16.0

func (d *Database) GetGateways() ([]api.Gateway, error)

GetGateways returns all gateways.

func (*Database) GetHostStatus added in v0.11.6

func (d *Database) GetHostStatus(nodeName string) (api.HostStatus, error)

HostStatusをetcdから取得する

func (*Database) GetImage added in v0.11.0

func (d *Database) GetImage(id string) (api.Image, error)

IDを指定してイメージの情報を取得する

func (*Database) GetImages added in v0.11.0

func (d *Database) GetImages() ([]api.Image, error)

イメージの全リストを返す

func (*Database) GetIpNetworkById added in v0.11.0

func (d *Database) GetIpNetworkById(vnetid, id string) (*api.IPNetwork, error)

func (*Database) GetIpNetworks added in v0.11.0

func (d *Database) GetIpNetworks(vnetid string) ([]api.IPNetwork, error)

func (*Database) GetJSON added in v0.9.1

func (d *Database) GetJSON(key string, out interface{}) (*etcd.GetResponse, error)

JSONデコードして取得

func (*Database) GetLoadBalancerById added in v0.19.0

func (d *Database) GetLoadBalancerById(id string) (api.ApplicationLoadBalancer, error)

func (*Database) GetLoadBalancers added in v0.19.0

func (d *Database) GetLoadBalancers() ([]api.ApplicationLoadBalancer, error)

func (*Database) GetNetworkLoadBalancerById added in v0.20.0

func (d *Database) GetNetworkLoadBalancerById(id string) (api.NetworkLoadBalancer, error)

func (*Database) GetNetworkLoadBalancers added in v0.20.0

func (d *Database) GetNetworkLoadBalancers() ([]api.NetworkLoadBalancer, error)

func (*Database) GetOsImgQcow2Tempes added in v0.9.1

func (d *Database) GetOsImgQcow2Tempes(osits *[]types.OsImageTemplate) error

func (*Database) GetOsImgTempByKey added in v0.8.7

func (d *Database) GetOsImgTempByKey(key string) (types.OsImageTemplate, error)

func (*Database) GetOsImgTempByOsVariant added in v0.9.1

func (d *Database) GetOsImgTempByOsVariant(osVariant string) (types.OsImageTemplate, error)

Keyに一致したOSイメージテンプレートを返す lvタイプとqcow2タイプの両方に対応するようにしたい OsImageTemplate構造体にタイプ情報を追加する必要があるかも

func (*Database) GetOsImgTempQcow2ByOsVariant added in v0.9.1

func (d *Database) GetOsImgTempQcow2ByOsVariant(osVariant string) (types.OsImageTemplate, error)

Keyに一致したOSイメージテンプレートqcow2を返す

func (*Database) GetOsImgTempes added in v0.8.9

func (d *Database) GetOsImgTempes(osits *[]types.OsImageTemplate) error

func (*Database) GetRoleByName added in v0.25.0

func (d *Database) GetRoleByName(roleName string) (api.Role, error)

GetRoleByName returns a built-in role by name.

func (*Database) GetSeqByKind added in v0.9.1

func (d *Database) GetSeqByKind(key string) (uint64, error)

シリアル番号の取得(CASロック)

func (*Database) GetSeqs added in v0.8.9

func (d *Database) GetSeqs(seqs *[]VmSerial) error

func (*Database) GetServerById added in v0.9.1

func (d *Database) GetServerById(id string) (api.Server, error)

サーバーをIDで取得

func (*Database) GetServers added in v0.9.1

func (d *Database) GetServers() (api.Servers, error)

サーバーのリストを取得

func (*Database) GetUserById added in v0.25.0

func (d *Database) GetUserById(userID string) (api.User, error)

GetUserById returns a user by id.

func (*Database) GetVersion added in v0.9.1

func (d *Database) GetVersion() (*api.Version, error)

func (*Database) GetVirtualNetworkById added in v0.11.0

func (d *Database) GetVirtualNetworkById(id string) (api.VirtualNetwork, error)

仮想ネットワークをIDで取得

func (*Database) GetVirtualNetworkByName added in v0.11.0

func (d *Database) GetVirtualNetworkByName(name string) (api.VirtualNetwork, error)

仮想ネットワークのリストを取得

func (*Database) GetVirtualNetworks added in v0.11.0

func (d *Database) GetVirtualNetworks() ([]api.VirtualNetwork, error)

仮想ネットワークのリストを取得

func (*Database) GetVolumeById added in v0.9.1

func (d *Database) GetVolumeById(id string) (api.Volume, error)

データボリュームの情報取得

func (*Database) GetVolumes added in v0.11.0

func (d *Database) GetVolumes() ([]api.Volume, error)

データボリュームの一覧取得

func (*Database) GetVpnGatewayById added in v0.17.0

func (d *Database) GetVpnGatewayById(id string) (api.VpnGateway, error)

func (*Database) GetVpnGateways added in v0.17.0

func (d *Database) GetVpnGateways() ([]api.VpnGateway, error)

func (*Database) ListRoles added in v0.25.0

func (d *Database) ListRoles() (api.Roles, error)

ListRoles returns the built-in role catalog.

func (*Database) ListUserApiKeys added in v0.25.0

func (d *Database) ListUserApiKeys(userID string) (api.ApiKeys, error)

ListUserApiKeys returns active API keys for a user.

func (*Database) ListUserRoles added in v0.25.0

func (d *Database) ListUserRoles(userID string) (api.RoleNames, error)

ListUserRoles returns the roles assigned to a user.

func (*Database) ListUsers added in v0.25.0

func (d *Database) ListUsers() (api.Users, error)

ListUsers returns all users.

func (*Database) ListVolumes added in v0.9.1

func (d *Database) ListVolumes(kind string) ([]api.Volume, error)

データボリュームの一覧取得

func (*Database) LockKey added in v0.9.1

func (d *Database) LockKey(lockName string) (*concurrency.Mutex, error)

LockKey: 指定キーに対する分散ロックを取得

func (*Database) LockUserById added in v0.25.0

func (d *Database) LockUserById(userID string) error

LockUserById locks a user and invalidates all API keys.

func (*Database) MakeFollowerImageEntry added in v0.12.0

func (d *Database) MakeFollowerImageEntry(headImage api.Image, followerNodeName string, headImageId string) (string, error)

MakeFollowerImageEntry creates a follower-side image object that waits for the head image. The follower image keeps headImageId in labels and starts from WAITING status.

func (*Database) MakeFollowerVirtualNetworkEntry added in v0.12.0

func (d *Database) MakeFollowerVirtualNetworkEntry(headNetwork api.VirtualNetwork, followerNodeName string, headNetworkID string) (string, error)

MakeFollowerVirtualNetworkEntry creates a follower-side network object that waits for the head network to become ACTIVE.

func (*Database) MakeImageEntryFromRunningVM added in v0.11.0

func (d *Database) MakeImageEntryFromRunningVM(serverId, name string) (api.Image, error)

ブートボリュームからイメージを作成する

func (*Database) MakeImageEntryFromSpec added in v0.14.1

func (d *Database) MakeImageEntryFromSpec(imageSpec api.Image) (string, error)

APIのImage定義をそのまま受け取り、イメージを作成する。

func (*Database) MakeImageEntryFromURL added in v0.11.0

func (d *Database) MakeImageEntryFromURL(name, url string) (string, error)

URLのイメージをダウンロードして、それからイメージを作成する

func (*Database) MakeImageEntryFromURLWithNode added in v0.11.7

func (d *Database) MakeImageEntryFromURLWithNode(name, url, nodeName string) (string, error)

URLのイメージをダウンロードして、それからイメージを作成する。 nodeName が指定されている場合は、Metadata.nodeName に記録する。

func (*Database) MakeImportedImageEntry added in v0.20.0

func (d *Database) MakeImportedImageEntry(name, nodeName, qcow2Path string) (api.Image, error)

MakeImportedImageEntry は既存のqcow2ファイルを参照する利用可能なイメージを登録する。

func (*Database) MakeServerEntry added in v0.11.0

func (d *Database) MakeServerEntry(spec api.Server) (api.Server, error)

サーバーを登録、サーバーを一意に識別するIDを自動生成、サーバーのステータスは、PENDINGで開始

func (*Database) PutDnsEntry added in v0.11.0

func (d *Database) PutDnsEntry(hostname, subdomain, ipAddress string) error

ホスト名、サブドメイン、IPアドレスを登録する

func (*Database) PutHostStatus added in v0.11.6

func (d *Database) PutHostStatus(status api.HostStatus) error

HostStatusをetcdに保存する

func (*Database) PutJSON added in v0.9.1

func (d *Database) PutJSON(key string, v interface{}) error

単純 Put(ロック前提・上書きで良い場合)

func (*Database) PutJSONCAS added in v0.9.1

func (d *Database) PutJSONCAS(key string, expectedRev int64, v interface{}) error

PutJSONCAS: ModRevision が expectedRev の時だけ更新する

func (*Database) PutVirtualNetworksETCD added in v0.11.0

func (d *Database) PutVirtualNetworksETCD(vnet api.VirtualNetwork) error

既存ネットワークの取得とデータベースへの登録

func (*Database) ReleaseIP added in v0.11.0

func (d *Database) ReleaseIP(vnetId, ipnetId, ip string) error

IPアドレスを解放する

func (*Database) ReleaseIPsByHostID added in v0.26.2

func (d *Database) ReleaseIPsByHostID(hostID string) error

ReleaseIPsByHostID は、全仮想ネットワークの IPAM テーブルから 指定 hostId に紐づく割り当て済み IP を解放する。

func (*Database) RevokeIdleLoginSessionsOlderThan added in v0.25.0

func (d *Database) RevokeIdleLoginSessionsOlderThan(olderThan time.Duration) (int, error)

RevokeIdleLoginSessionsOlderThan revokes login session API keys whose last activity is older than the threshold.

func (*Database) RollbackVolumeCreation added in v0.9.1

func (d *Database) RollbackVolumeCreation(id string)

ボリューム作成のロールバック

func (*Database) SetDeleteTimestamp added in v0.11.0

func (d *Database) SetDeleteTimestamp(id string) error

サーバーオブジェクトの削除日時をセット

func (*Database) SetDeleteTimestampGateway added in v0.16.0

func (d *Database) SetDeleteTimestampGateway(id string) error

SetDeleteTimestampGateway sets deletion timestamp for async controller processing.

func (*Database) SetDeleteTimestampImage added in v0.11.0

func (d *Database) SetDeleteTimestampImage(id string) error

イメージの削除予定日時をセットする

func (*Database) SetDeleteTimestampLoadBalancer added in v0.19.0

func (d *Database) SetDeleteTimestampLoadBalancer(id string) error

func (*Database) SetDeleteTimestampNetworkLoadBalancer added in v0.20.0

func (d *Database) SetDeleteTimestampNetworkLoadBalancer(id string) error

func (*Database) SetDeleteTimestampVirtualNetwork added in v0.11.0

func (d *Database) SetDeleteTimestampVirtualNetwork(id string) error

仮想ネットワークオブジェクトの削除タイムスタンプをセット

func (*Database) SetDeleteTimestampVpnGateway added in v0.17.0

func (d *Database) SetDeleteTimestampVpnGateway(id string) error

func (*Database) SetIPaddrInUse added in v0.11.0

func (d *Database) SetIPaddrInUse(vnetId, ipnetId, ip, hostId string) error

ネットワークIDをセットして、そのネットワークから割り当てられたIPアドレスを使用中としてマークする

func (*Database) SetImageQcow2Template added in v0.9.1

func (d *Database) SetImageQcow2Template(v cf.Image_yaml) error

qcow2イメージテンプレート

func (*Database) SetUserPasswordHash added in v0.25.0

func (d *Database) SetUserPasswordHash(userID, passwordHash string, mustChangePassword *bool) error

SetUserPasswordHash updates the password hash and password timestamp.

func (*Database) SetVersion added in v0.9.1

func (d *Database) SetVersion(ver api.Version) error

func (*Database) SetVolumeDeletionTimestamp added in v0.11.0

func (d *Database) SetVolumeDeletionTimestamp(id string)

削除タイムスタンプのセット

func (*Database) UnlockKey added in v0.9.1

func (d *Database) UnlockKey(m *concurrency.Mutex)

UnlockKey: エラーを無視してでも必ず呼ぶ想定

func (*Database) UnlockUserById added in v0.25.0

func (d *Database) UnlockUserById(userID string) error

UnlockUserById unlocks a user.

func (*Database) UpdateGatewayById added in v0.16.0

func (d *Database) UpdateGatewayById(id string, spec api.Gateway) error

UpdateGatewayById updates a gateway using optimistic locking.

func (*Database) UpdateGatewayStatusWithMessage added in v0.16.0

func (d *Database) UpdateGatewayStatusWithMessage(id string, status int, message string) error

UpdateGatewayStatusWithMessage updates status and optional message for gateway objects.

func (*Database) UpdateImage added in v0.11.0

func (d *Database) UpdateImage(id string, spec api.Image) error

イメージのオブジェクトを部分更新

func (*Database) UpdateImageStatus added in v0.11.0

func (d *Database) UpdateImageStatus(id string, status int) error

ステータスの変更

func (*Database) UpdateImageStatusMessage added in v0.11.5

func (d *Database) UpdateImageStatusMessage(id string, status int, message string) error

ステータスとメッセージの変更

func (*Database) UpdateLoadBalancerById added in v0.19.0

func (d *Database) UpdateLoadBalancerById(id string, spec api.ApplicationLoadBalancer) error

func (*Database) UpdateLoadBalancerStatusWithMessage added in v0.19.0

func (d *Database) UpdateLoadBalancerStatusWithMessage(id string, status int, message string) error

func (*Database) UpdateNetworkLoadBalancerById added in v0.20.0

func (d *Database) UpdateNetworkLoadBalancerById(id string, spec api.NetworkLoadBalancer) error

func (*Database) UpdateNetworkLoadBalancerStatusWithMessage added in v0.20.0

func (d *Database) UpdateNetworkLoadBalancerStatusWithMessage(id string, status int, message string) error

func (*Database) UpdateServer added in v0.9.1

func (d *Database) UpdateServer(id string, spec api.Server) error

サーバーを更新

func (*Database) UpdateServerStatus added in v0.11.0

func (d *Database) UpdateServerStatus(id string, status int, message string) error

サーバーオブジェクトのステータスを更新

func (*Database) UpdateUser added in v0.25.0

func (d *Database) UpdateUser(userID string, input api.User) error

UpdateUser updates the stored user.

func (*Database) UpdateVirtualNetworkById added in v0.11.0

func (d *Database) UpdateVirtualNetworkById(vnetId string, spec api.VirtualNetwork) error

仮想ネットワークを更新

func (*Database) UpdateVirtualNetworkStatus added in v0.11.0

func (d *Database) UpdateVirtualNetworkStatus(id string, status int)

仮想ネットワークオブジェクトのステータスを更新

func (*Database) UpdateVirtualNetworkStatusWithMessage added in v0.12.0

func (d *Database) UpdateVirtualNetworkStatusWithMessage(id string, status int, message string)

UpdateVirtualNetworkStatusWithMessage はステータスとメッセージを同時に更新する。 message が空の場合は、ステータスに応じたデフォルト値を設定。

func (*Database) UpdateVolume added in v0.9.1

func (d *Database) UpdateVolume(id string, updateData api.Volume) error

/ ボリュームを更新

func (*Database) UpdateVolumeStatus added in v0.11.0

func (d *Database) UpdateVolumeStatus(id string, status int)

OSボリュームの状態更新 エラー時はログ出力して処理を中断する(panic は発生させない)

func (*Database) UpdateVolumeStatusMessage added in v0.11.5

func (d *Database) UpdateVolumeStatusMessage(id string, status int, message string)

func (*Database) UpdateVpnGatewayById added in v0.17.0

func (d *Database) UpdateVpnGatewayById(id string, spec api.VpnGateway) error

func (*Database) UpdateVpnGatewayStatusWithMessage added in v0.17.0

func (d *Database) UpdateVpnGatewayStatusWithMessage(id string, status int, message string) error

type Job added in v0.9.1

type Job struct {
	Database *Database
	// contains filtered or unexported fields
}

ジョブ機能のインスタンス

func NewJobController added in v0.9.1

func NewJobController(url, jobLogPath string) (*Job, error)

ジョブコントローラの生成

func (*Job) CancelJob added in v0.9.1

func (d *Job) CancelJob(id string) error

ジョブ番号を指定してジョブをキャンセルする

func (*Job) CleanupJob added in v0.11.0

func (d *Job) CleanupJob(t int) error

ジョブとジョブログのクリーンナップ

func (*Job) EntryJob added in v0.9.1

func (d *Job) EntryJob(name string, cmd ...string) (string, error)

新しいジョブの登録

func (*Job) FetchJob added in v0.9.1

func (d *Job) FetchJob() (api.Job, error)

未処理ジョブの最も古いものを取得する

func (*Job) GetAllJobs added in v0.11.0

func (d *Job) GetAllJobs() ([]api.Job, error)

古いものから順番にジョブのリストを取得する

func (*Job) GetJob added in v0.11.0

func (d *Job) GetJob(id string) (api.Job, error)

func (*Job) GetJobs added in v0.9.1

func (d *Job) GetJobs(jobStatus int) ([]api.Job, error)

古いものから順番にジョブのリストを取得する

func (*Job) RunJob added in v0.9.1

func (d *Job) RunJob(job api.Job) error

ジョブの実行 Goルーチン内で、ジョブを起こして、標準出力、標準エラーをキャプチャして、ジョブログに保存する。 ジョブの終了コードも保存する。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL