Documentation ¶
Index ¶
- Constants
- type WzClient
- type WzControllerDbh
- type WzCtrlClientsAPI
- func (wcc *WzCtrlClientsAPI) Accept(fingerprints ...string) (missing []string)
- func (wcc *WzCtrlClientsAPI) Delete(fingerprints ...string) (missing []string)
- func (wcc *WzCtrlClientsAPI) GetByFQDN()
- func (wcc *WzCtrlClientsAPI) GetByFp()
- func (wcc *WzCtrlClientsAPI) GetByUid()
- func (wcc *WzCtrlClientsAPI) GetRegistered() []*WzClient
- func (wcc *WzCtrlClientsAPI) GetRegisteredAmount() int64
- func (wcc *WzCtrlClientsAPI) GetRejected() []*WzClient
- func (wcc *WzCtrlClientsAPI) Register(client *WzClient) int
- func (wcc *WzCtrlClientsAPI) Reject(fingerprints ...string) (missing []string)
- func (wcc *WzCtrlClientsAPI) Search(query string) []*WzClient
- func (wcc *WzCtrlClientsAPI) Set()
- func (wcc *WzCtrlClientsAPI) UpdateClientTraits()
- type WzCtrlKeysAPI
- func (wck *WzCtrlKeysAPI) AddRSAKeypairPEM(pub []byte, priv []byte, machineid string, fqdn string, owner string) error
- func (wck *WzCtrlKeysAPI) AddRSAPublicPEM(keypem []byte, machineid string, fqdn string, owner string) error
- func (wck *WzCtrlKeysAPI) GetRSAPublicPEMByFingerprint(fingerprint string) []byte
- func (wck *WzCtrlKeysAPI) ListRSAPublicPEMByOwner(owner string) []*WzPEMKeyEntity
- func (wck *WzCtrlKeysAPI) RemoveRSAKeyPEM(fingerprint string) error
- type WzCtrlWorkersAPI
- func (cwa *WzCtrlWorkersAPI) Activate()
- func (cwa *WzCtrlWorkersAPI) Add()
- func (cwa *WzCtrlWorkersAPI) AssignClients()
- func (cwa *WzCtrlWorkersAPI) Deactivate()
- func (cwa *WzCtrlWorkersAPI) GetAll()
- func (cwa *WzCtrlWorkersAPI) GetAssignedClients()
- func (cwa *WzCtrlWorkersAPI) Reconcile()
- func (cwa *WzCtrlWorkersAPI) Remove()
- func (cwa *WzCtrlWorkersAPI) UnassignClients()
- type WzPEMKeyEntity
Constants ¶
const ( OWNER_APP_REMOTE = "remote" OWNER_APP_CTRL = "controller" OWNER_APP_WORKER = "worker" OWNER_APP_CLIENT = "client" OWNER_APP_CLUSTER = "cluster" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type WzClient ¶
type WzClient struct { ID int `gorm:"primary_key"` Uid string `gorm:"unique; not null"` Fqdn string `gorm:"unique; not null"` RsaPk string `gorm:"unique; not null"` RsaFp string Status int `gorm:"not null"` }
WzClient entity object for the database
func NewWzClientFromPayload ¶
NewWzClientFromPayload creates an instance of the WzClient and fills-in with the payload
func (*WzClient) SetFingerprint ¶
SetFingerprint calculates and sets the fingerprint from the RSA key
type WzControllerDbh ¶
type WzControllerDbh struct {
// contains filtered or unexported fields
}
WzControllerDbh class bundle
func NewWzControllerDbh ¶
func NewWzControllerDbh() *WzControllerDbh
NewWzControllerDbh creates a new instances of the WzControllerDbh
func (*WzControllerDbh) GetClientsAPI ¶
func (wcd *WzControllerDbh) GetClientsAPI() *WzCtrlClientsAPI
GetClientsAPI returns an API bundle to access Client facility
func (*WzControllerDbh) GetKeysAPI ¶
func (wcd *WzControllerDbh) GetKeysAPI() *WzCtrlKeysAPI
GetKeysAPI returns an API bundle to store/retrieve/search for the PEM keys
func (*WzControllerDbh) SetDbh ¶
func (wcd *WzControllerDbh) SetDbh(dbh *gorm.DB)
SetDbh sets database handler to all the sub-objects
type WzCtrlClientsAPI ¶
type WzCtrlClientsAPI struct { wzlib_logger.WzLogger // contains filtered or unexported fields }
Everything with client
func NewWzCtrlClientsAPI ¶
func NewWzCtrlClientsAPI() *WzCtrlClientsAPI
func (*WzCtrlClientsAPI) Accept ¶
func (wcc *WzCtrlClientsAPI) Accept(fingerprints ...string) (missing []string)
Accept that was already registered. Accepetation means flipping status and it will be "OK, now you are in". This makes client listable for the workers. But the reconciliation needs to be extra called elsewhere.
func (*WzCtrlClientsAPI) Delete ¶
func (wcc *WzCtrlClientsAPI) Delete(fingerprints ...string) (missing []string)
Delete just deletes everything of the client. This client is eligible to be registered again.
func (*WzCtrlClientsAPI) GetByFQDN ¶
func (wcc *WzCtrlClientsAPI) GetByFQDN()
GetByFQDN returns client data (struct?) by FQDN
func (*WzCtrlClientsAPI) GetByFp ¶
func (wcc *WzCtrlClientsAPI) GetByFp()
GetByFp returns client data (struct?) by RSA fingerprint
func (*WzCtrlClientsAPI) GetByUid ¶
func (wcc *WzCtrlClientsAPI) GetByUid()
GetByUid returns client data (struct?) by system ID
func (*WzCtrlClientsAPI) GetRegistered ¶
func (wcc *WzCtrlClientsAPI) GetRegistered() []*WzClient
GetRegistered returns a list of new clients
func (*WzCtrlClientsAPI) GetRegisteredAmount ¶
func (wcc *WzCtrlClientsAPI) GetRegisteredAmount() int64
GetRegisteredAmount returns an amout of registered clients
func (*WzCtrlClientsAPI) GetRejected ¶
func (wcc *WzCtrlClientsAPI) GetRejected() []*WzClient
GetRejected returns a list of new clients
func (*WzCtrlClientsAPI) Register ¶
func (wcc *WzCtrlClientsAPI) Register(client *WzClient) int
Register register a client that just appeared. Registration means "Your public RSA is in the database, now wait"
func (*WzCtrlClientsAPI) Reject ¶
func (wcc *WzCtrlClientsAPI) Reject(fingerprints ...string) (missing []string)
Reject sets its status as "rejected", but keeps in the database everything: FQDN, machine ID and RSA pubkey. Used for black-listing.
func (*WzCtrlClientsAPI) Search ¶
func (wcc *WzCtrlClientsAPI) Search(query string) []*WzClient
Search for clients based on specific query
func (*WzCtrlClientsAPI) Set ¶
func (wcc *WzCtrlClientsAPI) Set()
Set sets/updates/adds client's status (struct?). This does not include traits.
func (*WzCtrlClientsAPI) UpdateClientTraits ¶
func (wcc *WzCtrlClientsAPI) UpdateClientTraits()
UpdateTraits adds/sets/updates client's traits
type WzCtrlKeysAPI ¶
type WzCtrlKeysAPI struct { wzlib_logger.WzLogger // contains filtered or unexported fields }
func NewWzCtrlKeysAPI ¶
func NewWzCtrlKeysAPI() *WzCtrlKeysAPI
func (*WzCtrlKeysAPI) AddRSAKeypairPEM ¶
func (*WzCtrlKeysAPI) AddRSAPublicPEM ¶
func (wck *WzCtrlKeysAPI) AddRSAPublicPEM(keypem []byte, machineid string, fqdn string, owner string) error
AddRSAPublicPEM returns client's RSA public key in PEM format, queried by the machine ID. the fqdn is to merely indicate what machine is holding it, but the key is tied up to the machine ID.
func (*WzCtrlKeysAPI) GetRSAPublicPEMByFingerprint ¶
func (wck *WzCtrlKeysAPI) GetRSAPublicPEMByFingerprint(fingerprint string) []byte
GetRSAPublicPEMByFingerprint returns a public key body
func (*WzCtrlKeysAPI) ListRSAPublicPEMByOwner ¶
func (wck *WzCtrlKeysAPI) ListRSAPublicPEMByOwner(owner string) []*WzPEMKeyEntity
ListRSAPublicPEM returns a list of registered public RSA keys, filtered by owner app.
func (*WzCtrlKeysAPI) RemoveRSAKeyPEM ¶
func (wck *WzCtrlKeysAPI) RemoveRSAKeyPEM(fingerprint string) error
RemoveRSAKeyPEM from the database by full fingerprint
type WzCtrlWorkersAPI ¶
type WzCtrlWorkersAPI struct {
// contains filtered or unexported fields
}
func NewWzCtrlWorkersAPI ¶
func NewWzCtrlWorkersAPI() *WzCtrlWorkersAPI
func (*WzCtrlWorkersAPI) Activate ¶
func (cwa *WzCtrlWorkersAPI) Activate()
Activate a worker. This should return a reasonable timeout after which Reconcile() is called. If Activate is called again (new worker is in), then the previous timeout for the entire reconciliation is updated with this one
func (*WzCtrlWorkersAPI) Add ¶
func (cwa *WzCtrlWorkersAPI) Add()
Add worker to the cluster (keeps empty, needs reconciliation)
func (*WzCtrlWorkersAPI) AssignClients ¶
func (cwa *WzCtrlWorkersAPI) AssignClients()
AssignClients will assign clients to the worker
func (*WzCtrlWorkersAPI) Deactivate ¶
func (cwa *WzCtrlWorkersAPI) Deactivate()
Deactivate a worker (reconciles the cluster)
func (*WzCtrlWorkersAPI) GetAssignedClients ¶
func (cwa *WzCtrlWorkersAPI) GetAssignedClients()
GetAssignedClients per a worker
func (*WzCtrlWorkersAPI) Reconcile ¶
func (cwa *WzCtrlWorkersAPI) Reconcile()
Reconcile the whole cluster. This gets to each worker and reassigns clients to work with. Each worker works only with assigned clients and every time there might be a new clients, it never met before. Worker, essentially, a job proxy.
The reconsiliation algorithm is to shift as little as possible of clients, so only necessary machines are re-assigned to another worker.
func (*WzCtrlWorkersAPI) Remove ¶
func (cwa *WzCtrlWorkersAPI) Remove()
Remove worker from the cluster (unassign everything)
func (*WzCtrlWorkersAPI) UnassignClients ¶
func (cwa *WzCtrlWorkersAPI) UnassignClients()
UnassignClients from the worker
type WzPEMKeyEntity ¶
type WzPEMKeyEntity struct { ID int `gorm:"primary_key"` RsaFp string `gorm:"unique; not null"` RsaPk []byte `gorm:"unique; not null"` RsaPrivKey []byte MachineId string `gorm:"unique"` Fqdn string `gorm:"unique"` Owner string `gorm:"not null"` Type string `gorm:"not null"` }
WzPEMKeyEntity entity object for the database of PEM keys