plugins

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jun 25, 2019 License: Apache-2.0 Imports: 4 Imported by: 1

README

[#trackit-logo]
image::https://s3-us-west-2.amazonaws.com/trackit-public-artifacts/github-page/logo.png[]

= TrackIt recommendation plugins

TrackIt uses a simple recommendation plugin system aimed at making the creation of new checks easier.

It allows you to focus on writing only the logic for your check, all the rest is taken care of by TrackIt.

= How to create a new recommendation plugin

== #1 Create a new folder for your plugin

Create a new folder in the `plugins/account` directory.

== #2 Write your plugin

A simple example of plugin is available at `plugins/account/unusedEBS`.

There are a few rules a plugin must respect in order to work:

=== A plugin should have an init function in which it registers itself

[source,go]
----
func init() {
	core.AccountPlugin{
    Name:               "My unique plugin name",
    Description:        "My plugin description",
    Category:           "My plugin category (example: EC2)",
    Label:              "The label used to display the number of checks (will be displayed with the following format on the front end: <passed> <label>(s))"
    Func:               myHandlerFunction,
    BillingDataOnly:    false, // Set to true if the plugin does not require a role to access the AWS API
	}.Register()
}
----

=== The handler function should take a core.PluginParams parameter

[source,go]
----
type PluginParams struct {
	Context            context.Context
	User               users.User
	AwsAccount         aws.AwsAccount
	AccountId          string
	AccountCredentials *credentials.Credentials
	ESClient           *elastic.Client
}
----
- `Context` is a standard GO context that you should use when needed
- `User` is the current user, see `users/users.go` for more details
- `AwsAccount` is the current AWS account, see `aws/aws.go` for more details
- `AccountId` is the current AWS account id
- `AccountCredentials` are AWS credentials for the current account that you can use to reach the AWS API
- `ESClient` is an ElasticSearch client that you can use to retrieve data from our ElasticSearch (for example billing data)

=== The handler function should return a core.PluginResult struct

[source,go]
----
type PluginResult struct {
	Result  string
	Status  string
	Details []string
	Error   string
	Checked int
	Passed  int
}
----
- `Result` should contain a short summary of the result of your check
- `Status` defines the color used to display the result (should be green/orange/red)
- `Details` can be used to give more insight about the result
- `Error` should expose an error message if your plugin was not able to generate a result
- `Checked` should contain the total number of checks run by the plugin
- `Passed` should contain the number of checks that passed successfully

== #3 Import your plugin

Your plugin must be imported in `plugins/plugins.go` in order to be loaded at startup.

== #4 Update the policies permissions if needed

If you use API calls that are not yet allowed in our policies, you should add them in `policies/all_policies.json` and `policies/tool_policies/monitor_ressources.json`

= How to contribute

All contributions are appreciated, feel free to create a pull request against the `stg` branch, the trackit team will make it available to everyone after review.

Some utilities functions are available in `plugins/utils`, feel free to add new functions if you think they could be useful for other plugins.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
account

Jump to

Keyboard shortcuts

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