Documentation
¶
Index ¶
- func ClockFn(fn func() error) error
- func ClockFnWithFields(fn func() error, fields log.Fields) error
- func CountNumberOfValuesMap(jsonMap map[string]interface{}) int
- func EmptyStringIfNil(attribute interface{}) string
- func Flatten(m map[string]interface{}) map[string]interface{}
- type ChefClientResource
- type ChefClientRun
- func (ccr *ChefClientRun) ChefVersion() string
- func (ccr *ChefClientRun) CloudProvider() string
- func (ccr *ChefClientRun) Cookbooks() []string
- func (ccr *ChefClientRun) DmiSystemManufacturer() string
- func (ccr *ChefClientRun) DmiSystemSerialNumber() string
- func (ccr *ChefClientRun) KernelRelease() string
- func (ccr *ChefClientRun) KernelVersion() string
- func (ccr *ChefClientRun) MemoryTotal() string
- func (ccr *ChefClientRun) Platform() string
- func (ccr *ChefClientRun) PlatformWithVersion() string
- func (ccr *ChefClientRun) RecipeNames() []string
- func (ccr *ChefClientRun) ResourceNames() []string
- func (ccr *ChefClientRun) RoleNames() []string
- func (ccr *ChefClientRun) TagNames() []string
- func (ccr *ChefClientRun) Timezone() string
- func (ccr *ChefClientRun) ToNode() (nodeState Node, err error)
- func (ccr *ChefClientRun) ToNodeAttribute() (NodeAttribute, error)
- func (ccr *ChefClientRun) ToNodeRun() (run Run, err error)
- func (ccr *ChefClientRun) VirtualizationRole() string
- func (ccr *ChefClientRun) VirtualizationSystem() string
- type ChefError
- type ChefErrorDescription
- type Client
- type Deprecation
- type Ec2
- type ExpandedRunList
- type ExpandedRunListRunList
- type Index
- type IndexSettingsVersion
- type InsightsRun
- type InsightsRunNodePayLoadData
- type InternalChefAction
- type Liveness
- type Node
- type NodeAttribute
- type NodeBasics
- type NodeInfo
- type NodePayload
- type NodeRunDateInfo
- type Resource
- type Run
- type UpsertNode
- type VersionedCookbook
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ClockFn ¶
ClockFn will call the provided func and clock the time it took to run
Example: ```
f := func() error {
return aFuncToMeasure()
}
err := backend.ClockFn(f) ```
func ClockFnWithFields ¶
ClockFnWithFields will call the provided func and clock the time it took to run plus adding the provided Fields to the log message
Example: Clock the time to insert a elasticsearch document ```
f := func() error {
// Add a document on a particular
_, err := bkend.client.Index().
Index(index).
Type(mapping.Type).
BodyJson(data).
Do(ctx)
return err
}
fields := log.Fields{
"metric": "elasticsearch",
"type": "doc_insert",
"index": index,
}
err := backend.ClockFnWithFields(f, fields) ```
This example will log a message similar to: => time="" level=info msg=metric index=converge-history-2017.12.12 metric=elasticsearch ms=12 type=doc_insert
func CountNumberOfValuesMap ¶
CountNumberOfValuesMap - counts the number of
func EmptyStringIfNil ¶
func EmptyStringIfNil(attribute interface{}) string
EmptyStringIfNil asserts an interface as a string, and if that fails it returns empty string
Types ¶
type ChefClientResource ¶
type ChefClientResource struct {
Type string `json:"type"`
Name string `json:"name"`
ID string `json:"id"`
Duration string `json:"duration"`
Delta string `json:"delta"`
Result string `json:"result"`
Status string `json:"status"`
IgnoreFailure ignoreFailureOption `json:"ignore_failure,omitempty"`
CookbookName string `json:"cookbook_name,omitempty"`
CookbookVersion string `json:"cookbook_version,omitempty"`
CookbookType string `json:"cookbook_type,omitempty"`
RecipeName string `json:"recipe_name,omitempty"`
Conditional string `json:"conditional,omitempty"`
Error ChefError `json:"error,omitempty"`
}
ChefClientResource represents a resource as reported from chef client
type ChefClientRun ¶
type ChefClientRun struct {
ChefServerFqdn string `json:"chef_server_fqdn"`
EntityUUID string `json:"entity_uuid"`
ExpandedRunList ExpandedRunList `json:"expanded_run_list"`
ID string `json:"id"`
MessageVersion string `json:"message_version"`
MessageType string `json:"message_type"`
NodeName string `json:"node_name"`
OrganizationName string `json:"organization_name"`
Resources []ChefClientResource `json:"resources"`
RunID string `json:"run_id"`
RunList []string `json:"run_list"`
StartTime time.Time `json:"start_time"`
EndTime time.Time `json:"end_time"`
Source string `json:"source"`
Status string `json:"status"`
TotalResourceCount int `json:"total_resource_count"`
UpdatedResourceCount int `json:"updated_resource_count"`
Error ChefError `json:"error,omitempty"`
NodePayload NodePayload `json:"node"`
PolicyName string `json:"policy_name"`
PolicyGroup string `json:"policy_group"`
Deprecations []Deprecation `json:"deprecations,omitempty"`
Tags []string `json:"tags,omitempty"`
}
ChefClientRun is the struct representing a chef client converge message
func (*ChefClientRun) ChefVersion ¶
func (ccr *ChefClientRun) ChefVersion() string
ChefVersion Returns a chef version string retrieved from automatic attributes or an empty string if it is not present
func (*ChefClientRun) CloudProvider ¶
func (ccr *ChefClientRun) CloudProvider() string
func (*ChefClientRun) Cookbooks ¶
func (ccr *ChefClientRun) Cookbooks() []string
Cookbooks returns an array of strings containing the names of cookbooks
func (*ChefClientRun) DmiSystemManufacturer ¶
func (ccr *ChefClientRun) DmiSystemManufacturer() string
func (*ChefClientRun) DmiSystemSerialNumber ¶
func (ccr *ChefClientRun) DmiSystemSerialNumber() string
func (*ChefClientRun) KernelRelease ¶
func (ccr *ChefClientRun) KernelRelease() string
func (*ChefClientRun) KernelVersion ¶
func (ccr *ChefClientRun) KernelVersion() string
func (*ChefClientRun) MemoryTotal ¶
func (ccr *ChefClientRun) MemoryTotal() string
func (*ChefClientRun) Platform ¶
func (ccr *ChefClientRun) Platform() string
func (*ChefClientRun) PlatformWithVersion ¶
func (ccr *ChefClientRun) PlatformWithVersion() string
func (*ChefClientRun) RecipeNames ¶
func (ccr *ChefClientRun) RecipeNames() []string
RecipeNames Returns an array of strings containing only the recipe names of the CCR
func (*ChefClientRun) ResourceNames ¶
func (ccr *ChefClientRun) ResourceNames() []string
ResourceNames Returns an array of strings containing only the resource names of the CCR
func (*ChefClientRun) RoleNames ¶
func (ccr *ChefClientRun) RoleNames() []string
RoleNames Returns an array of strings containing only the tag names of the CCR
func (*ChefClientRun) TagNames ¶
func (ccr *ChefClientRun) TagNames() []string
TagNames Returns an array of strings containing only the tag names of the CCR
func (*ChefClientRun) Timezone ¶
func (ccr *ChefClientRun) Timezone() string
func (*ChefClientRun) ToNode ¶
func (ccr *ChefClientRun) ToNode() (nodeState Node, err error)
ToNode Returns a Node after transforming a ChefClientRun into a Node object
func (*ChefClientRun) ToNodeAttribute ¶
func (ccr *ChefClientRun) ToNodeAttribute() (NodeAttribute, error)
ToNodeAttribute Returns the node attribute from a ChefClientRun
func (*ChefClientRun) ToNodeRun ¶
func (ccr *ChefClientRun) ToNodeRun() (run Run, err error)
ToNodeRun returns a run after transforming a ChefClientRun into a Run object
func (*ChefClientRun) VirtualizationRole ¶
func (ccr *ChefClientRun) VirtualizationRole() string
func (*ChefClientRun) VirtualizationSystem ¶
func (ccr *ChefClientRun) VirtualizationSystem() string
type ChefError ¶
type ChefError struct {
Class string `json:"class"`
Message string `json:"message"`
Backtrace []string `json:"backtrace"`
Description ChefErrorDescription `json:"description"`
}
ChefError as reported by chef client converge message
type ChefErrorDescription ¶
type Client ¶
type Client interface {
project_update_lib.SerializedProjectUpdate
// @param None
Initializing() bool
// @param (context)
InitializeStore(context.Context) error
// @param (context, node)
InsertNode(context.Context, Node) error
// @param (context, node)
InsertUpsertNode(ctx context.Context, node UpsertNode) error
// @param (context, UTC time, data)
InsertRun(context.Context, Run) error
// @param (context, UTC time, data)
InsertNodeAttribute(context.Context, NodeAttribute) error
// @param (context, UTC time)
InsertNodeRunDateInfo(context.Context, Run) error
// @param (context, threshold)
MarkNodesMissing(context.Context, string) ([]string, error)
// @param (context, threshold)
DeleteMarkedNodes(context.Context, string) (int, error)
// @param (context, threshold)
MarkMissingNodesForDeletion(context.Context, string) ([]string, error)
// @param (context, nodeIDs []string)
MarkForDeleteMultipleNodesByID(ctx context.Context, nodeIDs []string) (int, error)
// @param (context, nodeID string)
DeleteNodeByID(ctx context.Context, nodeID string) (int, error)
// @param (context, orgName string, remoteHostname string, nodeName string)
DeleteNodeByFields(ctx context.Context, orgName string, remoteHostname string, nodeName string) (int, error)
// @param (context, indexName)
DeleteIndex(context.Context, string) error
// @param (context, indexName)
DoesIndexExists(context.Context, string) (bool, error)
// @param (context, aliasName)
DoesAliasExists(context.Context, string) bool
// @param (context, templateName)
DeleteTemplate(context.Context, string) error
// @param (context, aliasName)
RemoveAlias(context.Context, string, string) error
// @param (context, aliasName)
CreateAlias(context.Context, string, string) error
// @param (context, cursorID)
GetNodeBasics(context.Context, string) ([]NodeBasics, error)
// @param (context, indexName)
GetAllTimeseriesIndiceNames(context.Context, string) ([]string, error)
// @param (context, nodeID)
RecordLivenessPing(context.Context, Liveness) error
// @param (context, instanceID)
FindNodeIDByInstanceId(context.Context, string) ([]string, error)
// @param (context, filter)
FindNodeIDsByFields(context.Context, map[string]string) ([]string, error)
// @param (data)
CreateBulkNodeUpdateRequest(Node) elastic.BulkableRequest
// @param (data)
CreateBulkNodeAttributeUpdateRequest(NodeAttribute) elastic.BulkableRequest
// @param (data)
CreateBulkNodeRunInfoUpdateRequest(Run) elastic.BulkableRequest
// @param (data)
CreateBulkRunUpdateRequest(Run) elastic.BulkableRequest
// @param (context, bulkableRequests)
SendBulkRequest(context.Context, []elastic.BulkableRequest) error
// @param (context, projectRules)
UpdateNodeProjectTags(context.Context, map[string]*authz.ProjectRules) (string, error)
// @param (context, jobID)
JobStatus(context.Context, string) (project_update_lib.JobStatus, error)
// @param (context, jobID)
JobCancel(context.Context, string) error
UpdateProjectTags(context.Context, map[string]*authz.ProjectRules) ([]string, error)
// Migration contracts
ReindexInsightstoConvergeHistory(context.Context, string, string) error
GetInsightsRunData(context.Context, string, string) ([]InsightsRunNodePayLoadData, error)
GetLatestA1NodeRun(context.Context, string, string) (InsightsRun, bool, error)
ReindexNodeStateA1(context.Context, string) error
UpdateNode(context.Context, string, InsightsRun, []VersionedCookbook) error
EmptyNodeLatestRunID(context.Context, string) error
ReindexInsightstoActions(context.Context, string, string) error
RefreshIndex(context.Context, string) error
GetNodeCount(context.Context, string) (int64, error)
// Methods to reindex indices
ReindexNodeStateToLatest(context.Context, string) (string, error)
// New method for reindexing indices
// @param (context, sourceIndex, destinationIndex)
// @return (taskID, error)
ReindexIndices(ctx context.Context, srcIndex, dstIndex string) (string, error)
GetActions(string, int, time.Time, string, bool) ([]InternalChefAction, int64, error)
DeleteAllIndexesWithPrefix(string, context.Context) error
GetIndices(ctx context.Context) ([]Index, error)
GetIndexVersionSettings(index string) (*IndexSettingsVersion, error)
TriggerReindex(index string) error
GetAliases(context.Context, string) ([]string, bool, error)
FetchIndexSettings(index string) (map[string]interface{}, error)
FetchIndexMappings(index string) (map[string]interface{}, error)
CreateIndex(destIndex string, sourceIndex string) error
}
type Deprecation ¶
type Ec2 ¶
type Ec2 struct {
InstanceId string `json:"instance_id"`
InstanceType string `json:"instance_type"`
PublicIpv4 interface{} `json:"public_ipv4"` // An interface bc ES type is `ip`
PlacementAvailabilityZone string `json:"placement_availability_zone"`
Region string `json:"region"`
AccountID string `json:"account_id"`
}
type ExpandedRunList ¶
type ExpandedRunList struct {
ID string `json:"id"`
RunList []ExpandedRunListRunList `json:"run_list"`
}
ExpandedRunList
type ExpandedRunListRunList ¶
type ExpandedRunListRunList struct {
Type string `json:"type"`
Name string `json:"name"`
Version interface{} `json:"version"`
Skipped bool `json:"skipped"`
Children []ExpandedRunListRunList `json:"children,omitempty"`
}
type Index ¶
type Index struct {
Health string `json:"health"`
Status string `json:"status"`
Index string `json:"index"`
UUID string `json:"uuid"`
Pri string `json:"pri"`
Rep string `json:"rep"`
DocsCount string `json:"docs.count"`
DocsDeleted string `json:"docs.deleted"`
StoreSize string `json:"store.size"`
PriStoreSize string `json:"pri.store.size"`
}
type IndexSettingsVersion ¶
type InsightsRun ¶
type InsightsRun struct {
RunID string `json:"run_id"`
StartTime time.Time `json:"start_time"`
EndTime time.Time `json:"end_time"`
TotalResourceCount int `json:"total_resource_count"`
UpdatedResourceCount int `json:"updated_resource_count"`
Node string `json:"node"` // escaped json
Resources []Resource `json:"resources"`
}
InsightsRun - converge data pulled from an A1 insights index.
type InternalChefAction ¶
type InternalChefAction struct {
Id string `json:"id"`
MessageType string `json:"message_type,omitempty"`
MessageVersion string `json:"message_version,omitempty"`
EntityName string `json:"entity_name,omitempty"`
EntityType string `json:"entity_type,omitempty"`
ParentName string `json:"parent_name,omitempty"`
ParentType string `json:"parent_type,omitempty"`
Task string `json:"task,omitempty"`
OrganizationName string `json:"organization_name,omitempty"`
RemoteHostname string `json:"remote_hostname,omitempty"`
RunId string `json:"run_id,omitempty"`
NodeId string `json:"node_id,omitempty"`
RecordedAt time.Time `json:"recorded_at,omitempty"`
RemoteRequestId string `json:"remote_request_id,omitempty"`
RequestId string `json:"request_id,omitempty"`
RequestorName string `json:"requestor_name,omitempty"`
RequestorType string `json:"requestor_type,omitempty"`
RevisionId string `json:"revision_id,omitempty"`
ServiceHostname string `json:"service_hostname,omitempty"`
UserAgent string `json:"user_agent,omitempty"`
Data string `json:"data,omitempty"`
Projects []string `json:"projects"`
}
type Liveness ¶
type Liveness struct {
NodeID string `json:"entity_uuid"`
Checkin time.Time `json:"checkin"`
LivenessManaged bool `json:"liveness_managed"`
Organization string `json:"organization_name"`
NodeName string `json:"node_name"`
SourceFQDN string `json:"source_fqdn"`
}
Liveness node ping message
type Node ¶
type Node struct {
NodeInfo
Checkin time.Time `json:"checkin"`
LatestRunID string `json:"latest_run_id"`
Exists bool `json:"exists"`
Attributes []string `json:"attributes"`
Ec2 Ec2 `json:"ec2,omitempty"`
LastCCRReceived time.Time `json:"lastCCRReceived,omitempty"`
LivenessManaged bool `json:"liveness_managed,omitempty"`
CloudID string `json:"cloud_id,omitempty"`
CloudAccountID string `json:"cloud_account_id,omitempty"`
CloudRegion string `json:"cloud_region,omitempty"`
HasDeprecations bool `json:"has_deprecations"`
DeprecationsCount int `json:"deprecations_count"`
Projects []string `json:"projects"`
ErrorMessage string `json:"error_message"`
ErrorType string `json:"error_type"`
}
Node is the representation of a Node
type NodeAttribute ¶
type NodeAttribute struct {
EntityUUID string `json:"entity_uuid"`
Name string `json:"name"`
RunList []string `json:"run_list"`
ChefEnvironment string `json:"chef_environment"`
Normal string `json:"normal"`
NormalValueCount int `json:"normal_value_count"`
Default string `json:"default"`
DefaultValueCount int `json:"default_value_count"`
Override string `json:"override"`
OverrideValueCount int `json:"override_value_count"`
Automatic string `json:"automatic"`
AutomaticValueCount int `json:"automatic_value_count"`
AllValueCount int `json:"all_value_count"`
LastUpdate time.Time `json:"last_update"`
}
NodeAttribute is the representation of the attributes of a Node
func CreateNodeAttribute ¶
func CreateNodeAttribute(nodePayload NodePayload, entityUUID string) (attribute NodeAttribute, err error)
CreateNodeAttribute crate the NodeAttribute from the NodePayload
type NodeBasics ¶
type NodeInfo ¶
type NodeInfo struct {
EntityUuid string `json:"entity_uuid"`
EventAction string `json:"event_action"`
NodeName string `json:"node_name"`
OrganizationName string `json:"organization_name"`
RunList []string `json:"run_list"`
Source string `json:"source"`
// In the backend, status may be modified by other systems/processes and have
// new values, for example to mark a node missing
Status string `json:"status"`
// ChefRunStatus should not be modified and should always contain the Chef
// Run's success/failure outcome. This is used to with elasticsearch
// aggregations to compute success/failure statistics across different node
// cohorts
ChefRunStatus string `json:"chef_run_status"`
TotalResourceCount int `json:"total_resource_count"`
Deprecations []Deprecation `json:"deprecations,omitempty"`
Error ChefError `json:"error,omitempty"`
Tags []string `json:"tags,omitempty"`
ResourceNames []string `json:"resource_names"`
Recipes []string `json:"recipes"`
ChefTags []string `json:"chef_tags"`
Cookbooks []string `json:"cookbooks"`
Platform string `json:"platform"`
PlatformFamily string `json:"platform_family"`
PlatformVersion string `json:"platform_version"`
ChefVersion string `json:"chef_version"`
UptimeSeconds int64 `json:"uptime_seconds"`
Environment string `json:"environment"`
Roles []string `json:"roles"`
PolicyName string `json:"policy_name"`
PolicyGroup string `json:"policy_group"`
PolicyRevision string `json:"policy_revision"`
Fqdn string `json:"fqdn"`
Ipaddress interface{} `json:"ipaddress"`
SourceFqdn string `json:"source_fqdn"`
ExpandedRunList ExpandedRunList `json:"expanded_run_list"`
Timestamp time.Time `json:"timestamp"`
VersionedCookbooks []VersionedCookbook `json:"versioned_cookbooks"`
CloudProvider string `json:"cloud_provider"`
Timezone string `json:"timezone"`
KernelRelease string `json:"kernel_release"`
KernelVersion string `json:"kernel_version"`
VirtualizationSystem string `json:"virtualization_system"`
VirtualizationRole string `json:"virtualization_role"`
DmiSystemManufacturer string `json:"dmi_system_manufacturer"`
DmiSystemSerialNumber string `json:"dmi_system_serial_number"`
Domain string `json:"domain"`
Hostname string `json:"hostname"`
Macaddress string `json:"macaddress"`
MemoryTotal string `json:"memory_total"`
Ip6address interface{} `json:"ip6address"`
}
NodeInfo defines common fields between Run and Node types
type NodePayload ¶
type NodePayload struct {
Name string `json:"name"`
ChefEnvironment string `json:"chef_environment"`
PolicyName string `json:"policy_name"`
PolicyGroup string `json:"policy_group"`
RunList []string `json:"run_list"`
Normal map[string]interface{} `json:"normal"`
Default map[string]interface{} `json:"default"`
Override map[string]interface{} `json:"override"`
Automatic map[string]interface{} `json:"automatic"`
}
NodePayload is the ohai information reported in a chef client converge message
type NodeRunDateInfo ¶
type NodeRunDateInfo struct {
NodeID string `json:"node_uuid"`
FirstRun time.Time `json:"first_run"`
LastRun time.Time `json:"last_run"`
}
NodeRunDateInfo The node data to store latest run datetime in elasticsearch
type Resource ¶
type Resource struct {
Type string `json:"type"`
Name string `json:"name"`
ID string `json:"id"`
Duration string `json:"duration"`
Delta string `json:"delta"`
IgnoreFailure bool `json:"ignore_failure,omitempty"`
Result string `json:"result"`
Status string `json:"status"`
CookbookName string `json:"cookbook_name,omitempty"`
CookbookVersion string `json:"cookbook_version,omitempty"`
CookbookType string `json:"cookbook_type,omitempty"`
RecipeName string `json:"recipe_name,omitempty"`
Conditional string `json:"conditional,omitempty"`
Error ChefError `json:"error,omitempty"`
}
Resource is the representation of a Chef Resource
type Run ¶
type Run struct {
NodeInfo
Resources []Resource `json:"resources"`
RunID string `json:"run_id"`
StartTime time.Time `json:"start_time"`
EndTime time.Time `json:"end_time"`
UpdatedResourceCount int `json:"updated_resource_count"`
}
Run is the representation of a Run
type UpsertNode ¶
UpsertNode The node data used when the node is first created in the node-state index.
type VersionedCookbook ¶
VersionedCookbook links cookbook names and versions
func VersionedCookbooks ¶
func VersionedCookbooks(nodePayload NodePayload) []VersionedCookbook
VersionedCookbooks returns an array of VersionedCookbooks