nosql

package module
v0.3.1 Latest Latest
Warning

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

Go to latest
Published: Aug 3, 2026 License: Apache-2.0 Imports: 7 Imported by: 0

README

[!WARNING]

このレポジトリの内容は下記に集約・移転しました。 github.com/sacloud/sacloud-sdk-go

今後は上記のレポジトリで開発を行います。 このライブラリを使用している方は、importを変更していただきますようお願いいたします。

// 変更前
import "github.com/sacloud/nosql-api-go"

// 変更後
import "github.com/sacloud/sacloud-sdk-go/api/nosql"

sacloud/nosql-api-go

Go言語向けのさくらのクラウド NoSQL APIライブラリ

NoSQL ドキュメント: https://manual.sakura.ad.jp/cloud/appliance/nosql/index.html

概要

sacloud/nosql-api-goはさくらのクラウド NoSQL APIをGo言語から利用するためのAPIライブラリです。

package main

import (
	"context"
	"fmt"
	"net/netip"

	nosql "github.com/sacloud/nosql-api-go"
	v1 "github.com/sacloud/nosql-api-go/apis/v1"
	"github.com/sacloud/saclient-go"
)

func main() {
	theClient := saclient.Client{}
	client, err := nosql.NewClient(&theClient)
	if err != nil {
		panic(err)
	}
    
    ctx := context.Background()
	databaseOp := nosql.NewDatabaseOp(client)
	// 以下はテスト用のセットアップ。アドレスなどは実際の環境向けに編集する
	resCreated, err := databaseOp.Create(ctx, nosql.Plan100GB, v1.NosqlCreateRequestAppliance{
		Name:        "sdk-test-db",
		Description: v1.NewOptString("This is a test database"),
		Tags:        v1.NewOptNilTags([]string{"nosql"}),
		Settings: v1.NosqlSettings{
			Backup: v1.NewOptNilNosqlSettingsBackup(v1.NosqlSettingsBackup{
				Connect:   "nfs://192.168.0.31/export",
				DayOfWeek: v1.NewOptNilNosqlSettingsBackupDayOfWeekItemArray([]v1.NosqlSettingsBackupDayOfWeekItem{"sun"}),
				Time:      v1.NewOptNilString("00:00"),
				Rotate:    2,
			}),
			SourceNetwork:    []string{},
			Password:         v1.NewOptPassword("sdktest-12345"),
			ReserveIPAddress: v1.NewOptIPv4(netip.MustParseAddr("192.168.0.10")),
			Repair: v1.NewOptNilNosqlSettingsRepair(v1.NosqlSettingsRepair{
				Incremental: v1.NewOptNosqlSettingsRepairIncremental(v1.NosqlSettingsRepairIncremental{
					DaysOfWeek: []v1.NosqlSettingsRepairIncrementalDaysOfWeekItem{"sun"},
					Time:       "01:00",
				}),
				Full: v1.NewOptNosqlSettingsRepairFull(v1.NosqlSettingsRepairFull{
					DayOfWeek: v1.NosqlSettingsRepairFullDayOfWeek("sun"),
					Time:      "02:00",
					Interval:  v1.NosqlSettingsRepairFullInterval(7),
				}),
			}),
		},
		Remark: v1.NosqlRemark{
			// NosqlRemarkNosqlの設定は現状固定値なので、DefaultUser以外は変更しない
			Nosql: v1.NosqlRemarkNosql{
				DatabaseEngine:  v1.NewOptNilNosqlRemarkNosqlDatabaseEngine("Cassandra"),
				DatabaseVersion: v1.NewOptNilString("4.1.10"),
				DefaultUser:     v1.NewOptNilString("sdktest"),
				Port:            v1.NewOptNilInt(9042),
				Storage:         v1.NewOptNilNosqlRemarkNosqlStorage("SSD"),
				Zone:            "tk1b",
			},
			Servers: []v1.NosqlRemarkServersItem{
				{UserIPAddress: netip.MustParseAddr("192.168.0.4")},
				{UserIPAddress: netip.MustParseAddr("192.168.0.5")},
				{UserIPAddress: netip.MustParseAddr("192.168.0.6")},
			},
			Network: v1.NosqlRemarkNetwork{
				DefaultRoute:   "192.168.0.1",
				NetworkMaskLen: 24,
			},
		},
		UserInterfaces: []v1.NosqlCreateRequestApplianceUserInterfacesItem{
			{
				// 実際のSwitchのリソースIDを指定する
				Switch:         v1.NosqlCreateRequestApplianceUserInterfacesItemSwitch{ID: "111111111111"},
				UserIPAddress1: netip.MustParseAddr("192.168.0.4"),
				UserIPAddress2: v1.NewOptIPv4(netip.MustParseAddr("192.168.0.5")),
				UserIPAddress3: v1.NewOptIPv4(netip.MustParseAddr("192.168.0.6")),
				UserSubnet: v1.NosqlCreateRequestApplianceUserInterfacesItemUserSubnet{
					DefaultRoute:   "192.168.0.1",
					NetworkMaskLen: 24,
				},
			},
		},
	})
	if err != nil {
		panic(err)
	}
	fmt.Printf("Created Database: %+v\n", resCreated)

	res, err := databaseOp.Read(ctx, resCreated.ID)
	if err != nil {
		panic(err)
	}
	fmt.Printf("Read Database: %+v\n", res)

	instanceOp := nosql.NewInstanceOp(client, res.ID, "tk1b")
	version, err := instanceOp.GetVersion(ctx)
	if err != nil {
		panic(err)
	}
	fmt.Printf("Version: %+v\n", version)

	// Backup API
	// backupOp := nosql.NewBackupOp(client, res.ID)
}

NOTE: DatabaseAPIにあるNoSQL更新APIは設定のバリデーションのみで、実際に更新するには追加で反映APIを呼ぶ必要があります: UpdateApplyChanges.

ノードの追加
func main()
{
    // 省略
	instanceOp := nosql.NewInstanceOpWithZone(client, primaryNodeId, "tk1b")
	resAdded, err := instanceOp.AddNodes(ctx, nosql.Plan100GB, v1.NosqlCreateRequestAppliance{
		Name: "sdk-test-db-add",
		Settings: v1.NosqlSettings{
			ReserveIPAddress: v1.NewOptIPv4(netip.MustParseAddr("192.168.0.11")),
		},
		Remark: v1.NosqlRemark{
			Nosql: v1.NosqlRemarkNosql{
				Zone: "tk1b",
			},
			Servers: []v1.NosqlRemarkServersItem{
				{UserIPAddress: netip.MustParseAddr("192.168.0.7")},
				{UserIPAddress: netip.MustParseAddr("192.168.0.8")},
			},
			Network: v1.NosqlRemarkNetwork{
				DefaultRoute:   "192.168.0.1",
				NetworkMaskLen: 24,
			},
		},
		UserInterfaces: []v1.NosqlCreateRequestApplianceUserInterfacesItem{
			{
				Switch:         v1.NosqlCreateRequestApplianceUserInterfacesItemSwitch{ID: "111111111111"},
				UserIPAddress1: netip.MustParseAddr("192.168.0.7"),
				UserIPAddress2: v1.NewOptIPv4(netip.MustParseAddr("192.168.0.8")),
				UserSubnet: v1.NosqlCreateRequestApplianceUserInterfacesItemUserSubnet{
					DefaultRoute:   "192.168.0.1",
					NetworkMaskLen: 24,
				},
			},
		},
	})
}

⚠ v1.0に達するまでは互換性のない形で変更される可能性がありますのでご注意ください。

ogenによるコード生成

以下のコマンドを実行

$ go get -tool github.com/ogen-go/ogen/cmd/ogen@latest
$ go tool ogen -package v1 -target apis/v1 -clean -config ogen-config.yaml ./openapi/openapi.json

License

nosql-api-go Copyright (C) 2025- The sacloud/nosql-api-go authors. This project is published under Apache 2.0 License.

Documentation

Overview

Deprecated: This module has moved to github.com/sacloud/sacloud-sdk-go. Please migrate to that module. This repository will be archived.

Index

Constants

View Source
const (
	// DefaultAPIRootURL デフォルトのAPIルートURL
	DefaultAPIRootURL = "https://secure.sakura.ad.jp/cloud/zone/tk1b/api/cloud/1.1"

	// ServiceKey SDKの種別を示すキー、プロファイルでのエンドポイント取得に利用する
	ServiceKey = "nosql"
)
View Source
const Version = "0.3.1"

Variables

View Source
var UserAgent = fmt.Sprintf(
	"nosql-api-go/%s (%s/%s; +https://github.com/sacloud/nosql-api-go)",
	Version,
	runtime.GOOS,
	runtime.GOARCH,
)

UserAgent APIリクエスト時のユーザーエージェント

Functions

func NewClient

func NewClient(client saclient.ClientAPI) (*v1.Client, error)

func NewClientWithAPIRootURL added in v0.3.0

func NewClientWithAPIRootURL(client saclient.ClientAPI, apiRootURL string) (*v1.Client, error)

Types

type BackupAPI

type BackupAPI interface {
	List(ctx context.Context) ([]v1.NosqlBackup, error)
	Create(ctx context.Context) error
	Restore(ctx context.Context, id uuid.UUID) error
	Delete(ctx context.Context, id uuid.UUID) error
}

func NewBackupOp

func NewBackupOp(client *v1.Client, dbId string) BackupAPI

type DatabaseAPI

type DatabaseAPI interface {
	List(ctx context.Context) ([]v1.GetNosqlAppliance, error)
	Create(ctx context.Context, plan Plan, request v1.NosqlCreateRequestAppliance) (*v1.NosqlAppliance, error)
	Read(ctx context.Context, id string) (*v1.GetNosqlAppliance, error)
	Update(ctx context.Context, id string, request v1.NosqlUpdateRequestAppliance) error
	Delete(ctx context.Context, id string) error
	ApplyChanges(ctx context.Context, id string) error
	GetStatus(ctx context.Context, id string) (*v1.NosqlStatusResponseApplianceSettingsResponseNosql, error)
}

func NewDatabaseOp

func NewDatabaseOp(client *v1.Client) DatabaseAPI

type Error

type Error struct {
	// contains filtered or unexported fields
}

func NewAPIError

func NewAPIError(method string, code int, err error) *Error

func NewError

func NewError(msg string, err error) *Error

func (*Error) Error

func (e *Error) Error() string

func (*Error) Unwrap

func (e *Error) Unwrap() error

type InstanceAPI

type InstanceAPI interface {
	GetVersion(ctx context.Context) (*v1.NosqlGetVersionResponseNosql, error)
	UpgradeVersion(ctx context.Context, version string) error
	GetParameters(ctx context.Context) ([]v1.NosqlGetParameter, error)
	SetParameters(ctx context.Context, params []v1.NosqlPutParameter) error
	GetNodeHealth(ctx context.Context) (v1.NodeHealthNosqlStatus, error)
	AddNodes(ctx context.Context, plan Plan, request v1.NosqlCreateRequestAppliance) (*v1.NosqlAppliance, error)
	Recover(ctx context.Context) (string, error)
	Repair(ctx context.Context, repairType string) error
	Start(ctx context.Context) error
	Stop(ctx context.Context) error
}

func NewInstanceOp

func NewInstanceOp(client *v1.Client, dbId string, zone string) InstanceAPI

type Plan added in v0.2.0

type Plan string
const (
	Plan40GB  Plan = "40GB"
	Plan100GB Plan = "100GB"
	Plan250GB Plan = "250GB"
)

func GetPlanFromID added in v0.2.0

func GetPlanFromID(planID int) Plan

func (Plan) AllValues added in v0.2.0

func (Plan) AllValues() []Plan

func (Plan) AllValuesAsString added in v0.2.0

func (Plan) AllValuesAsString() []string

func (Plan) GetDiskSizeMB added in v0.2.0

func (p Plan) GetDiskSizeMB() int

func (Plan) GetMemoryMB added in v0.2.0

func (p Plan) GetMemoryMB() int

func (Plan) GetNodes added in v0.2.0

func (p Plan) GetNodes() int

func (Plan) GetNodesForNodes added in v0.2.0

func (p Plan) GetNodesForNodes() int

func (Plan) GetPlanID added in v0.2.0

func (p Plan) GetPlanID() int

func (Plan) GetPlanIDforNodes added in v0.2.0

func (p Plan) GetPlanIDforNodes() int

func (Plan) GetServiceClass added in v0.2.0

func (p Plan) GetServiceClass() v1.ServiceClass

func (Plan) GetServiceClassForNodes added in v0.2.0

func (p Plan) GetServiceClassForNodes() v1.ServiceClass

func (Plan) GetVirtualCore added in v0.2.0

func (p Plan) GetVirtualCore() int

Directories

Path Synopsis
apis
v1
Code generated by ogen, DO NOT EDIT.
Code generated by ogen, DO NOT EDIT.

Jump to

Keyboard shortcuts

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