ndb_api

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Nov 7, 2023 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const OPERATION_STATUS_FAILED = "FAILED"
View Source
const OPERATION_STATUS_PASSED = "PASSED"

Variables

View Source
var ComputeOOBProfileResolver = func(p ProfileResponse) bool {
	return p.Type == common.PROFILE_TYPE_COMPUTE && p.SystemProfile &&
		strings.EqualFold(p.Name, common.PROFILE_DEFAULT_OOB_SMALL_COMPUTE)
}
View Source
var DbParamInstanceOOBProfileResolver = func(p ProfileResponse) bool {

	return p.SystemProfile && p.Type == common.PROFILE_TYPE_DATABASE_PARAMETER && p.Topology == common.TOPOLOGY_INSTANCE
}
View Source
var DbParamOOBProfileResolver = func(p ProfileResponse) bool {
	return p.SystemProfile && p.Type == common.PROFILE_TYPE_DATABASE_PARAMETER
}
View Source
var NetworkOOBProfileResolver = func(p ProfileResponse) bool {
	return p.Type == common.PROFILE_TYPE_NETWORK
}
View Source
var SoftwareOOBProfileResolverForSingleInstance = func(p ProfileResponse) bool {
	return p.Type == common.PROFILE_TYPE_SOFTWARE && p.SystemProfile && p.Topology == common.TOPOLOGY_SINGLE
}

Functions

func GetDatabaseEngineName

func GetDatabaseEngineName(dbType string) string

func GetDatabasePortByType

func GetDatabasePortByType(dbType string) int32

func GetDatabaseTypeFromEngine added in v0.0.8

func GetDatabaseTypeFromEngine(engine string) string

func GetOperationStatus added in v0.0.8

func GetOperationStatus(o OperationResponse) string

Returns an operation status string

func ResolveProfiles

func ResolveProfiles(ctx context.Context, ndb_client *ndb_client.NDBClient, databaseType string, profileResolvers ProfileResolvers) (profilesMap map[string]ProfileResponse, err error)

Fetches all the profiles and returns a map of profiles Returns an error if any profile is not found

Types

type ActionArgument

type ActionArgument struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

type AuthValidateResponse added in v0.0.7

type AuthValidateResponse struct {
	Status  string `json:"status"`
	Message string `json:"message"`
}

func AuthValidate added in v0.0.7

func AuthValidate(ctx context.Context, ndbClient *ndb_client.NDBClient) (authValidateResponse AuthValidateResponse, err error)

Validates the auth credentials against the 'auth/validate' endpoint Returns the response along with an error (if any)

type CloneDeprovisionRequest added in v0.0.8

type CloneDeprovisionRequest struct {
	SoftRemove           bool `json:"softRemove"`
	Remove               bool `json:"remove"`
	Delete               bool `json:"delete"`
	Forced               bool `json:"forced"`
	DeleteDataDrives     bool `json:"deleteDataDrives"`
	DeleteLogicalCluster bool `json:"deleteLogicalCluster"`
	RemoveLogicalCluster bool `json:"removeLogicalCluster"`
	DeleteTimeMachine    bool `json:"deleteTimeMachine"`
}

func GenerateDeprovisionCloneRequest added in v0.0.8

func GenerateDeprovisionCloneRequest() (req *CloneDeprovisionRequest)

Returns a request to delete a clone instance

type ContinuousSchedule added in v0.0.6

type ContinuousSchedule struct {
	Enabled           bool `json:"enabled"`
	LogBackupInterval int  `json:"logBackupInterval"`
	SnapshotsPerDay   int  `json:"snapshotsPerDay"`
}

type DatabaseCloneRequest added in v0.0.8

type DatabaseCloneRequest struct {
	Name                       string           `json:"name"`
	Description                string           `json:"description"`
	CreateDbServer             bool             `json:"createDbserver"`
	Clustered                  bool             `json:"clustered"`
	NxClusterId                string           `json:"nxClusterId"`
	SSHPublicKey               string           `json:"sshPublicKey,omitempty"`
	DbServerId                 string           `json:"dbserverId,omitempty"`
	DbServerClusterId          string           `json:"dbserverClusterId,omitempty"`
	DbserverLogicalClusterId   string           `json:"dbserverLogicalClusterId,omitempty"`
	TimeMachineId              string           `json:"timeMachineId"`
	SnapshotId                 string           `json:"snapshotId,omitempty"`
	UserPitrTimestamp          string           `json:"userPitrTimestamp,omitempty"`
	TimeZone                   string           `json:"timeZone"`
	LatestSnapshot             bool             `json:"latestSnapshot"`
	NodeCount                  int              `json:"nodeCount"`
	Nodes                      []Node           `json:"nodes"`
	ActionArguments            []ActionArgument `json:"actionArguments"`
	Tags                       interface{}      `json:"tags"`
	LcmConfig                  *LcmConfig       `json:"lcmConfig,omitempty"`
	VmPassword                 string           `json:"vmPassword"`
	ComputeProfileId           string           `json:"computeProfileId"`
	NetworkProfileId           string           `json:"networkProfileId"`
	DatabaseParameterProfileId string           `json:"databaseParameterProfileId"`
}

func GenerateCloningRequest added in v0.0.8

func GenerateCloningRequest(ctx context.Context, ndb_client *ndb_client.NDBClient, database DatabaseInterface, reqData map[string]interface{}) (requestBody *DatabaseCloneRequest, err error)

This function generates and returns a request for cloning a database on NDB

type DatabaseDeprovisionRequest

type DatabaseDeprovisionRequest struct {
	Delete               bool `json:"delete"`
	Remove               bool `json:"remove"`
	SoftRemove           bool `json:"softRemove"`
	Forced               bool `json:"forced"`
	DeleteTimeMachine    bool `json:"deleteTimeMachine"`
	DeleteLogicalCluster bool `json:"deleteLogicalCluster"`
}

func GenerateDeprovisionDatabaseRequest

func GenerateDeprovisionDatabaseRequest() (req *DatabaseDeprovisionRequest)

Returns a request to delete a database instance

type DatabaseInterface

type DatabaseInterface interface {
	IsClone() bool
	GetName() string
	GetDescription() string
	GetClusterId() string
	GetProfileResolvers() ProfileResolvers
	GetCredentialSecret() string
	GetTimeZone() string
	GetInstanceType() string
	GetInstanceDatabaseNames() string
	GetInstanceSize() int
	GetInstanceTMDetails() (string, string, string)
	GetTMScheduleForInstance() (Schedule, error)
	GetCloneSourceDBId() string
	GetCloneSnapshotId() string
	GetAdditionalArguments() map[string]string
}

type DatabaseLCMConfig added in v0.0.8

type DatabaseLCMConfig struct {
	ExpiryDetails  ExpiryDetails  `json:"expiryDetails,omitempty"`
	RefreshDetails RefreshDetails `json:"refreshDetails,omitempty"`
}

type DatabaseNode

type DatabaseNode struct {
	Id               string         `json:"id"`
	Name             string         `json:"name"`
	DatabaseServerId string         `json:"dbServerId"`
	DbServer         DatabaseServer `json:"dbserver"`
}

type DatabaseProvisionRequest

type DatabaseProvisionRequest struct {
	DatabaseType             string           `json:"databaseType"`
	Name                     string           `json:"name"`
	DatabaseDescription      string           `json:"databaseDescription"`
	SoftwareProfileId        string           `json:"softwareProfileId"`
	SoftwareProfileVersionId string           `json:"softwareProfileVersionId"`
	ComputeProfileId         string           `json:"computeProfileId"`
	NetworkProfileId         string           `json:"networkProfileId"`
	DbParameterProfileId     string           `json:"dbParameterProfileId"`
	NewDbServerTimeZone      string           `json:"newDbServerTimeZone"`
	CreateDbServer           bool             `json:"createDbserver"`
	NodeCount                int              `json:"nodeCount"`
	NxClusterId              string           `json:"nxClusterId"`
	SSHPublicKey             string           `json:"sshPublicKey,omitempty"`
	Clustered                bool             `json:"clustered"`
	AutoTuneStagingDrive     bool             `json:"autoTuneStagingDrive"`
	TimeMachineInfo          TimeMachineInfo  `json:"timeMachineInfo"`
	ActionArguments          []ActionArgument `json:"actionArguments"`
	Nodes                    []Node           `json:"nodes"`
	DatabaseName             string           `json:"databaseName,omitempty"`
}

func GenerateProvisioningRequest

func GenerateProvisioningRequest(ctx context.Context, ndb_client *ndb_client.NDBClient, database DatabaseInterface, reqData map[string]interface{}) (requestBody *DatabaseProvisionRequest, err error)

This function generates and returns a request for provisioning a database (and a dbserver vm) on NDB The database provisioned has a NONE time machine SLA attached to it, and uses the default OOB profiles

type DatabaseResponse

type DatabaseResponse struct {
	Id            string         `json:"id"`
	Name          string         `json:"name"`
	Status        string         `json:"status"`
	DatabaseNodes []DatabaseNode `json:"databaseNodes"`
	Properties    []Property     `json:"properties"`
	TimeMachineId string         `json:"timeMachineId"`
	Type          string         `json:"type"`
}

func GetAllClones added in v0.0.8

func GetAllClones(ctx context.Context, ndbClient *ndb_client.NDBClient) (clones []DatabaseResponse, err error)

Fetches all the clones on the NDB instance and retutns a slice of the databases

func GetAllDatabases

func GetAllDatabases(ctx context.Context, ndbClient *ndb_client.NDBClient) (databases []DatabaseResponse, err error)

Fetches all the databases on the NDB instance and retutns a slice of the databases

func GetDatabaseById

func GetDatabaseById(ctx context.Context, ndbClient *ndb_client.NDBClient, id string) (database DatabaseResponse, err error)

Fetches and returns a database by an Id

type DatabaseServer

type DatabaseServer struct {
	Id          string   `json:"id"`
	Name        string   `json:"name"`
	IPAddresses []string `json:"ipAddresses"`
}

type DatabaseServerDeprovisionRequest

type DatabaseServerDeprovisionRequest struct {
	Delete            bool `json:"delete"`
	Remove            bool `json:"remove"`
	SoftRemove        bool `json:"softRemove"`
	DeleteVgs         bool `json:"deleteVgs"`
	DeleteVmSnapshots bool `json:"deleteVmSnapshots"`
}

func GenerateDeprovisionDatabaseServerRequest

func GenerateDeprovisionDatabaseServerRequest() (req *DatabaseServerDeprovisionRequest)

Returns a request to delete a database server vm

type ExpiryDetails added in v0.0.8

type ExpiryDetails struct {
	ExpireInDays       string `json:"expireInDays"`
	ExpiryDateTimezone string `json:"expiryDateTimezone"`
	DeleteDatabase     string `json:"deleteDatabase"`
}

type LcmConfig added in v0.0.8

type LcmConfig struct {
	DatabaseLCMConfig DatabaseLCMConfig `json:"databaseLCMConfig,omitempty"`
}

type MSSQLRequestAppender added in v0.0.8

type MSSQLRequestAppender struct{}

Implements RequestAppender

type MongoDbRequestAppender added in v0.0.8

type MongoDbRequestAppender struct{}

Implements RequestAppender

type MonthlySchedule added in v0.0.6

type MonthlySchedule struct {
	Enabled    bool `json:"enabled"`
	DayOfMonth int  `json:"dayOfMonth"`
}

type MySqlRequestAppender added in v0.0.8

type MySqlRequestAppender struct{}

Implements RequestAppender

type Node

type Node struct {
	VmName              string   `json:"vmName"`
	ComputeProfileId    string   `json:"computeProfileId,omitempty"`
	NetworkProfileId    string   `json:"networkProfileId,omitempty"`
	NewDbServerTimeZone string   `json:"newDbServerTimeZone,omitempty"`
	NxClusterId         string   `json:"nxClusterId,omitempty"`
	Properties          []string `json:"properties"`
}

type OperationResponse added in v0.0.8

type OperationResponse struct {
	Id                 string `json:"id"`
	Name               string `json:"name"`
	Status             string `json:"status"`
	PercentageComplete string `json:"percentageComplete"`
	Message            string `json:"message"`
	StartTime          string `json:"startTime"`
	EndTime            string `json:"endTime"`
}

func GetOperationById added in v0.0.8

func GetOperationById(ctx context.Context, ndbClient *ndb_client.NDBClient, id string) (operation OperationResponse, err error)

Fetches and returns a operation by an Id

type PostgresRequestAppender added in v0.0.8

type PostgresRequestAppender struct{}

Implements RequestAppender

type ProfileResolver

type ProfileResolver interface {
	Resolve(ctx context.Context, allProfiles []ProfileResponse, filter func(p ProfileResponse) bool) (profile ProfileResponse, err error)
	GetName() string
	GetId() string
}

type ProfileResolvers

type ProfileResolvers map[string]ProfileResolver

type ProfileResponse

type ProfileResponse struct {
	Id              string `json:"id"`
	Name            string `json:"name"`
	Type            string `json:"type"`
	EngineType      string `json:"engineType"`
	LatestVersionId string `json:"latestVersionId"`
	Topology        string `json:"topology"`
	SystemProfile   bool   `json:"systemProfile"`
	Status          string `json:"status"`
}

func GetAllProfiles

func GetAllProfiles(ctx context.Context, ndbClient *ndb_client.NDBClient) (profiles []ProfileResponse, err error)

Fetches and returns all the available profiles as a profile slice

type Property

type Property struct {
	Name        string `json:"name"`
	Value       string `json:"value"`
	Description string `json:"description"`
}

type QuarterlySchedule added in v0.0.6

type QuarterlySchedule struct {
	Enabled    bool   `json:"enabled"`
	StartMonth string `json:"startMonth"`
	DayOfMonth int    `json:"dayOfMonth"`
}

type RefreshDetails added in v0.0.8

type RefreshDetails struct {
	RefreshInDays       string `json:"refreshInDays"`
	RefreshTime         string `json:"refreshTime"`
	RefreshDateTimezone string `json:"refreshDateTimezone"`
}

type RequestAppender added in v0.0.8

type RequestAppender interface {
	// contains filtered or unexported methods
}

func GetRequestAppender added in v0.0.8

func GetRequestAppender(databaseType string) (requestAppender RequestAppender, err error)

Get specific implementation of the DBProvisionRequestAppender interface based on the provided databaseType

type SLAResponse

type SLAResponse struct {
	Id                 string `json:"id"`
	Name               string `json:"name"`
	UniqueName         string `json:"uniqueName"`
	Description        string `json:"description"`
	DailyRetention     int    `json:"dailyRetention"`
	WeeklyRetention    int    `json:"weeklyRetention"`
	MonthlyRetention   int    `json:"monthlyRetention"`
	QuarterlyRetention int    `json:"quarterlyRetention"`
	YearlyRetention    int    `json:"yearlyRetention"`
}

func GetAllSLAs

func GetAllSLAs(ctx context.Context, ndbClient *ndb_client.NDBClient) (slas []SLAResponse, err error)

Fetches and returns all the SLAs as a sla slice

func GetSLAByName added in v0.0.6

func GetSLAByName(ctx context.Context, ndb_client *ndb_client.NDBClient, name string) (sla SLAResponse, err error)

Fetches all the SLAs from the ndb and returns the SLA matching the name Returns an error if not found.

type Schedule added in v0.0.6

type Schedule struct {
	SnapshotTimeOfDay  SnapshotTimeOfDay  `json:"snapshotTimeOfDay"`
	ContinuousSchedule ContinuousSchedule `json:"continuousSchedule"`
	WeeklySchedule     WeeklySchedule     `json:"weeklySchedule"`
	MonthlySchedule    MonthlySchedule    `json:"monthlySchedule"`
	QuarterlySchedule  QuarterlySchedule  `json:"quartelySchedule"`
	YearlySchedule     YearlySchedule     `json:"yearlySchedule"`
}

type SnapshotTimeOfDay added in v0.0.6

type SnapshotTimeOfDay struct {
	Hours   int `json:"hours"`
	Minutes int `json:"minutes"`
	Seconds int `json:"seconds"`
}

type TaskInfoSummaryResponse

type TaskInfoSummaryResponse struct {
	Name                 string                    `json:"name"`
	WorkId               string                    `json:"workId"`
	OperationId          string                    `json:"operationId"`
	DbServerId           string                    `json:"dbserverId"`
	Message              string                    `json:"messgae"`
	EntityId             string                    `json:"entityId"`
	EntityName           string                    `json:"entityName"`
	EntityType           string                    `json:"entityType"`
	Status               string                    `json:"status"`
	AssociatedOperations []TaskInfoSummaryResponse `json:"associatedOperations"`
	DependencyReport     interface{}               `json:"dependencyReport"`
}

func DeprovisionClone added in v0.0.8

func DeprovisionClone(ctx context.Context, ndbClient *ndb_client.NDBClient, id string, req CloneDeprovisionRequest) (task TaskInfoSummaryResponse, err error)

Deprovisions a clone instance given a clone id Returns the task info summary response for the operation

func DeprovisionDatabase

func DeprovisionDatabase(ctx context.Context, ndbClient *ndb_client.NDBClient, id string, req DatabaseDeprovisionRequest) (task TaskInfoSummaryResponse, err error)

Deprovisions a database instance given a database id Returns the task info summary response for the operation

func DeprovisionDatabaseServer

func DeprovisionDatabaseServer(ctx context.Context, ndbClient *ndb_client.NDBClient, id string, req DatabaseServerDeprovisionRequest) (task TaskInfoSummaryResponse, err error)

Deprovisions a database server vm given a server id Returns the task info summary response for the operation

func ProvisionClone added in v0.0.8

func ProvisionClone(ctx context.Context, ndbClient *ndb_client.NDBClient, req *DatabaseCloneRequest) (task TaskInfoSummaryResponse, err error)

Provisions a clone based on the clone provisioning request Returns the task info summary response for the operation

func ProvisionDatabase

func ProvisionDatabase(ctx context.Context, ndbClient *ndb_client.NDBClient, req *DatabaseProvisionRequest) (task TaskInfoSummaryResponse, err error)

Provisions a database instance based on the database provisioning request Returns the task info summary response for the operation

type TimeMachineInfo

type TimeMachineInfo struct {
	Name             string   `json:"name"`
	Description      string   `json:"description"`
	SlaId            string   `json:"slaId"`
	Schedule         Schedule `json:"schedule"`
	Tags             []string `json:"tags"`
	AutoTuneLogDrive bool     `json:"autoTuneLogDrive"`
}

type WeeklySchedule added in v0.0.6

type WeeklySchedule struct {
	Enabled   bool   `json:"enabled"`
	DayOfWeek string `json:"dayOfWeek"`
}

type YearlySchedule added in v0.0.6

type YearlySchedule struct {
	Enabled    bool   `json:"enabled"`
	DayOfMonth int    `json:"dayOfMonth"`
	Month      string `json:"month"`
}

Jump to

Keyboard shortcuts

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