Documentation ¶
Index ¶
- Constants
- Variables
- func GetNewOrm() orm.Ormer
- func IgnoreDBInsertIDError(err error) error
- func NotDBInsertIDError(err error) bool
- func SetDatabase(d Database)
- type Database
- type DatabaseConfig
- type DatabaseWatcherConfig
- type FakeTransactionImpl
- type InstanceModel
- type ResourceModel
- type ServiceBindingModel
- type Transaction
- type TransactionImpl
Constants ¶
const ( // AliasName of the database AliasName = "default" // SslEnableKey the env key of the database ssl SslEnableKey = "SSL_ENABLE" // DefaultSQLDriverName the default sql driver DefaultSQLDriverName = "sqlite" )
const ( // StatusInstalling for operator StatusInstalling = "Installing" // StatusSuccess for operator StatusSuccess = "Success" // StatusAbnormal for operator StatusAbnormal = "Abnormal" // StatusUnknown for instance StatusUnknown = "Unknown" // StatusInitializing for instance StatusInitializing = "Initializing" // StatusInitialized for instance StatusInitialized = "Initialized" // StatusInitFailed for instance StatusInitFailed = "InitFailed" // StatusFailed for operator and instance StatusFailed = "Failed" // StatusUpgrading for instance operator StatusUpgrading = "Upgrading" // StatusRollingBack for instance operator StatusRollingBack = "RollingBack" // StatusDeleting for instance operator StatusDeleting = "Deleting" // StatusUpgradeFailed for instance operator StatusUpgradeFailed = "UpgradeFailed" // StatusDeleteFailed for instance operator StatusDeleteFailed = "DeleteFailed" // StatusRollBackFailed for instance operator StatusRollBackFailed = "RollBackFailed" )
const (
// Manager the service type name of manager service
Manager serviceType = "Manager"
)
Variables ¶
var FailedStatusList = []string{StatusUpgradeFailed, StatusDeleteFailed, StatusRollBackFailed, StatusFailed, StatusInitFailed}
FailedStatusList of instance and operator
var Handler = func(err *error, tx Transaction) { if IgnoreDBInsertIDError(*err) != nil { tx.RollBackTransaction() return } *err = tx.CommitTransaction() }
Handler functions for error and transaction
Functions ¶
func IgnoreDBInsertIDError ¶
IgnoreDBInsertIDError because insert to the database it may have some id errors, we need to ignore this kind of errors
func NotDBInsertIDError ¶
NotDBInsertIDError because insert to the database it may have some id errors, we need to ignore this kind of errors
Types ¶
type Database ¶
type Database interface { InitSQLDriver(cfg *DatabaseConfig, serviceType serviceType) error GetDBConnection() string // contains filtered or unexported methods }
Database interface of the connections and etc.
type DatabaseConfig ¶
type DatabaseConfig struct { SQLDriver string MaxIdle int MaxConn int MaxLifetime int SslEnable string }
DatabaseConfig the basic config for the database
func DefaultDatabaseConfiguration ¶
func DefaultDatabaseConfiguration() *DatabaseConfig
DefaultDatabaseConfiguration get the default database configuration
type DatabaseWatcherConfig ¶
type DatabaseWatcherConfig struct { // database uri Connection string // min interval seconds for database reconnection ListenerMinReconnectInterval time.Duration // max interval seconds for database reconnection ListenerMaxReconnectInterval time.Duration }
DatabaseWatcherConfig configuration for watch the database connection
func DefaultDatabaseWatcherConfig ¶
func DefaultDatabaseWatcherConfig() *DatabaseWatcherConfig
DefaultDatabaseWatcherConfig get the default database watcher config
type FakeTransactionImpl ¶
type FakeTransactionImpl struct {
// contains filtered or unexported fields
}
FakeTransactionImpl for unit test
func (*FakeTransactionImpl) BeginTransaction ¶
func (t *FakeTransactionImpl) BeginTransaction() error
BeginTransaction fake method for unit test
func (*FakeTransactionImpl) CommitTransaction ¶
func (t *FakeTransactionImpl) CommitTransaction() error
CommitTransaction fake method for unit test
func (*FakeTransactionImpl) GetTransaction ¶
func (t *FakeTransactionImpl) GetTransaction() orm.TxOrmer
GetTransaction from implement
func (*FakeTransactionImpl) RollBackTransaction ¶
func (t *FakeTransactionImpl) RollBackTransaction()
RollBackTransaction fake method for unit test
type InstanceModel ¶
type InstanceModel struct { ID string `orm:"size(40);pk;column(id)"` Kind string `orm:"size(64);column(kind)"` APIVersion string `orm:"size(64);column(api_version)"` Name string `orm:"size(64);column(name)"` Namespace string `orm:"size(64);column(namespace)"` ServiceBindingID string `orm:"size(40);column(service_binding_id)"` RawResource string `orm:"type(text);null;column(raw_resource)"` Status string `orm:"size(64);column(status)"` ErrorMessage string `orm:"type(text);null;column(error_message)"` ServiceID string `orm:"size(40);column(service_id)"` InstanceType internals.InstanceType `orm:"size(64);column(instance_type)"` ServiceName string `orm:"size(64);column(service_name)"` ClusterID string `orm:"size(64);column(cluster_id)"` ClusterName string `orm:"size(64);column(cluster_name)"` PackageDependencies string `orm:"type(text);null;column(pkg_dependencies)"` CreateTimestamp time.Time `orm:"type(datetime);auto_now_add;column(create_timestamp)"` ProcessTime time.Time `orm:"type(datetime);null;column(process_time)"` UpdateTime time.Time `orm:"type(datetime);null;column(update_timestamp)"` InstallState string `orm:"type(text);column(install_state)"` Resource *ResourceModel `orm:"null;rel(fk)"` }
InstanceModel defines the table fields of instance_model in database
type ResourceModel ¶
type ResourceModel struct { ID string `orm:"size(40);pk;column(id)"` Kind string `orm:"size(64);column(kind)"` Group string `orm:"size(64);column(group)"` APIVersion string `orm:"size(64);column(api_version)"` Resource string `orm:"size(64);column(resource)"` CreateTimestamp time.Time `orm:"type(datetime);auto_now_add;column(create_timestamp)"` UpdateTimestamp time.Time `orm:"type(datetime);null;column(update_timestamp)"` Instances []*InstanceModel `json:"instances" orm:"null;reverse(many)"` ServiceBinding *ServiceBindingModel `orm:"null;rel(fk)"` }
ResourceModel defines the table fields of resource_model in database
func (*ResourceModel) Generate ¶
func (r *ResourceModel) Generate(currTimestamp time.Time, isUpdate bool)
Generate fills a resource_model record with id and timestamps
func (*ResourceModel) GetInstanceToResourceMap ¶
func (r *ResourceModel) GetInstanceToResourceMap() (map[string]ResourceModel, map[string]InstanceModel)
GetInstanceToResourceMap get the (instance's key) - (resource) map, Key is the format of InstanceModel.Name;InstanceModel.Namespace;InstanceModel.ClusterName
type ServiceBindingModel ¶
type ServiceBindingModel struct { ID string `orm:"size(40);pk;column(id)"` Name string `orm:"size(64);column(name)"` Version string `orm:"size(64);column(service_version)"` Namespace string `orm:"size(64);default(kappital-system);column(namespace)"` ServiceName string `orm:"size(64);column(service_name)"` ClusterName string `orm:"size(64);default(default);column(cluster_name)"` ServiceID string `orm:"size(40);column(service_id)"` VersionID string `orm:"size(40);column(version_id)"` Status string `orm:"size(64);default(Pending);column(status)"` ErrorMessage string `orm:"type(text);null;column(error_message)"` Workloads string `orm:"type(text);null;column(workloads)"` Permissions string `orm:"type(text);null;column(permissions)"` CustomResourceDefinition string `orm:"type(text);null;column(crd)"` CapabilityPlugin string `orm:"type(text);null;column(capability_plugin)"` CreateTime time.Time `orm:"type(datetime);auto_now_add;column(create_timestamp)"` UpdateTime time.Time `orm:"type(datetime);null;column(update_timestamp)"` ProcessTime time.Time `orm:"type(datetime);null;column(process_timestamp)"` Resources []*ResourceModel `json:"resources" orm:"null;reverse(many)"` }
ServiceBindingModel defines the table fields of service_binding_model in database
func (*ServiceBindingModel) Generate ¶
func (s *ServiceBindingModel) Generate(currTimestamp time.Time, isUpdate bool)
Generate fills a service_binding_model record with id and timestamps
func (*ServiceBindingModel) GetResourceIDMap ¶
func (s *ServiceBindingModel) GetResourceIDMap() map[string]string
GetResourceIDMap get the ServiceBinding's ResourceModel ID map Key is the format of ResourceModel.Kind;ResourceModel.APIVersion;ResourceModel.Resource
func (*ServiceBindingModel) TableUnique ¶
func (s *ServiceBindingModel) TableUnique() [][]string
TableUnique makes combined columns unique
type Transaction ¶
type Transaction interface { BeginTransaction() error CommitTransaction() error RollBackTransaction() GetTransaction() orm.TxOrmer }
Transaction of the database actions
func NewTransaction ¶
func NewTransaction(sqlSession orm.Ormer) Transaction
NewTransaction create a new transaction
type TransactionImpl ¶
type TransactionImpl struct {
// contains filtered or unexported fields
}
TransactionImpl which implement the sqlSession
func (*TransactionImpl) BeginTransaction ¶
func (t *TransactionImpl) BeginTransaction() error
BeginTransaction begins using the transaction
func (*TransactionImpl) CommitTransaction ¶
func (t *TransactionImpl) CommitTransaction() error
CommitTransaction commit the transaction if it does not have error
func (*TransactionImpl) GetTransaction ¶
func (t *TransactionImpl) GetTransaction() orm.TxOrmer
GetTransaction from implement
func (*TransactionImpl) RollBackTransaction ¶
func (t *TransactionImpl) RollBackTransaction()
RollBackTransaction not return err for meaningless golint and codex