Documentation ¶
Index ¶
- Variables
- func WithAutoServerVersion() func(client *DynatraceClient)
- func WithCachingDisabled(disabled bool) func(client *DynatraceClient)
- func WithClientRequestLimiter(limiter *concurrency.Limiter) func(client *DynatraceClient)
- func WithCustomUserAgentString(userAgent string) func(client *DynatraceClient)
- func WithExternalIDGenerator(g idutils.ExternalIDGenerator) func(client *DynatraceClient)
- func WithRetrySettings(retrySettings rest.RetrySettings) func(*DynatraceClient)
- func WithServerVersion(serverVersion version.Version) func(client *DynatraceClient)
- type Client
- type ConfigClient
- type DataEntry
- type DownloadSettingsObject
- type DummyClient
- func (c *DummyClient) ConfigExistsByName(_ context.Context, a api.API, name string) (exists bool, id string, err error)
- func (c *DummyClient) CreatedObjects() int
- func (c *DummyClient) DeleteConfigById(a api.API, id string) error
- func (c *DummyClient) DeleteSettings(_ string) error
- func (c *DummyClient) FetchSchemasConstraints(_ string) (constraints SchemaConstraints, err error)
- func (c *DummyClient) GetEntries(a api.API) ([]DataEntry, bool)
- func (c *DummyClient) GetSettingById(_ string) (*DownloadSettingsObject, error)
- func (c *DummyClient) ListConfigs(_ context.Context, a api.API) (values []Value, err error)
- func (c *DummyClient) ListSchemas() (SchemaList, error)
- func (c *DummyClient) ListSettings(_ context.Context, _ string, _ ListSettingsOptions) ([]DownloadSettingsObject, error)
- func (c *DummyClient) ReadConfigById(a api.API, id string) ([]byte, error)
- func (c *DummyClient) UpsertConfigByName(_ context.Context, a api.API, name string, data []byte) (entity DynatraceEntity, err error)
- func (c *DummyClient) UpsertConfigByNonUniqueNameAndId(_ context.Context, a api.API, entityId string, name string, data []byte) (entity DynatraceEntity, err error)
- func (c *DummyClient) UpsertSettings(_ context.Context, obj SettingsObject, _ UpsertSettingsOptions) (DynatraceEntity, error)
- type DynatraceClient
- func (d *DynatraceClient) ConfigExistsByName(ctx context.Context, api api.API, name string) (exists bool, id string, err error)
- func (d *DynatraceClient) DeleteConfigById(api api.API, id string) (err error)
- func (d *DynatraceClient) DeleteSettings(objectID string) (err error)
- func (d *DynatraceClient) FetchSchemasConstraints(schemaID string) (constraints SchemaConstraints, err error)
- func (d *DynatraceClient) GetSettingById(objectId string) (res *DownloadSettingsObject, err error)
- func (d *DynatraceClient) ListConfigs(ctx context.Context, api api.API) (values []Value, err error)
- func (d *DynatraceClient) ListSchemas() (schemas SchemaList, err error)
- func (d *DynatraceClient) ListSettings(ctx context.Context, schemaId string, opts ListSettingsOptions) (res []DownloadSettingsObject, err error)
- func (d *DynatraceClient) ReadConfigById(api api.API, id string) (json []byte, err error)
- func (d *DynatraceClient) UpsertConfigByName(ctx context.Context, api api.API, name string, payload []byte) (entity DynatraceEntity, err error)
- func (d *DynatraceClient) UpsertConfigByNonUniqueNameAndId(ctx context.Context, api api.API, entityId string, name string, payload []byte) (entity DynatraceEntity, err error)
- func (d *DynatraceClient) UpsertSettings(ctx context.Context, obj SettingsObject, options UpsertSettingsOptions) (result DynatraceEntity, err error)
- type DynatraceEntity
- type ListSettingsFilter
- type ListSettingsOptions
- type Properties
- type SchemaConstraints
- type SchemaList
- type SchemaListResponse
- type SettingsClient
- type SettingsModificationInfo
- type SettingsObject
- type SyntheticEntity
- type SyntheticLocationResponse
- type SyntheticMonitorsResponse
- type SyntheticValue
- type UpsertSettingsOptions
- type Value
- type ValuesResponse
Constants ¶
This section is empty.
Variables ¶
var ErrSettingNotFound = errors.New("settings object not found")
ErrSettingNotFound is returned when no settings 2.0 object could be found
Functions ¶
func WithAutoServerVersion ¶
func WithAutoServerVersion() func(client *DynatraceClient)
WithAutoServerVersion can be used to let the client automatically determine the Dynatrace server version during creation using newDynatraceClient. If the server version is already known WithServerVersion should be used
func WithCachingDisabled ¶ added in v2.6.0
func WithCachingDisabled(disabled bool) func(client *DynatraceClient)
WithCachingDisabled allows disabling the client's builtin caching mechanism for classic configs, schema constraints and settings objects. Disabling the caching is recommended in situations where configs are fetched immediately after their creation (e.g. in test scenarios)
func WithClientRequestLimiter ¶
func WithClientRequestLimiter(limiter *concurrency.Limiter) func(client *DynatraceClient)
WithClientRequestLimiter specifies that a specifies the limiter to be used for limiting parallel client requests
func WithCustomUserAgentString ¶
func WithCustomUserAgentString(userAgent string) func(client *DynatraceClient)
WithCustomUserAgentString allows to configure a custom user-agent string that the Client will send with each HTTP request If none is set, the default Monaco CLI specific user-agent is sent.
func WithExternalIDGenerator ¶
func WithExternalIDGenerator(g idutils.ExternalIDGenerator) func(client *DynatraceClient)
func WithRetrySettings ¶
func WithRetrySettings(retrySettings rest.RetrySettings) func(*DynatraceClient)
WithRetrySettings sets the retry settings to be used by the DynatraceClient
func WithServerVersion ¶
func WithServerVersion(serverVersion version.Version) func(client *DynatraceClient)
WithServerVersion sets the Dynatrace version of the Dynatrace server/tenant the client will be interacting with
Types ¶
type Client ¶
type Client interface { ConfigClient SettingsClient }
Client provides the functionality for performing basic CRUD operations on any Dynatrace API supported by monaco. It encapsulates the configuration-specific inconsistencies of certain APIs in one place to provide a common interface to work with. After all: A user of Client shouldn't care about the implementation details of each individual Dynatrace API. Its design is intentionally not dependent on the Config and Environment interfaces included in monaco. This makes sure, that Client can be used as a base for future tooling, which relies on a standardized way to access Dynatrace APIs.
type ConfigClient ¶
type ConfigClient interface { // ListConfigs lists the available configs for an API. // It calls the underlying GET endpoint of the API. E.g. for alerting profiles this would be: // GET <environment-url>/api/config/v1/alertingProfiles // The result is expressed using a list of Value (id and name tuples). ListConfigs(ctx context.Context, a api.API) (values []Value, err error) // ReadConfigById reads a Dynatrace config identified by id from the given API. // It calls the underlying GET endpoint for the API. E.g. for alerting profiles this would be: // GET <environment-url>/api/config/v1/alertingProfiles/<id> ... to get the alerting profile ReadConfigById(a api.API, id string) (json []byte, err error) // UpsertConfigByName creates a given Dynatrace config if it doesn't exist and updates it otherwise using its name. // It calls the underlying GET, POST, and PUT endpoints for the API. E.g. for alerting profiles this would be: // GET <environment-url>/api/config/v1/alertingProfiles ... to check if the config is already available // POST <environment-url>/api/config/v1/alertingProfiles ... afterwards, if the config is not yet available // PUT <environment-url>/api/config/v1/alertingProfiles/<id> ... instead of POST, if the config is already available UpsertConfigByName(ctx context.Context, a api.API, name string, payload []byte) (entity DynatraceEntity, err error) // UpsertConfigByNonUniqueNameAndId creates a given Dynatrace config if it doesn't exist and updates it based on specific rules if it does not // - if only one config with the name exist, behave like any other type and just update this entity // - if an exact match is found (same name and same generated UUID) update that entity // - if several configs exist, but non match the generated UUID create a new entity with generated UUID // It calls the underlying GET and PUT endpoints for the API. E.g. for alerting profiles this would be: // GET <environment-url>/api/config/v1/alertingProfiles ... to check if the config is already available // PUT <environment-url>/api/config/v1/alertingProfiles/<id> ... with the given (or found by unique name) entity ID UpsertConfigByNonUniqueNameAndId(ctx context.Context, a api.API, entityID string, name string, payload []byte) (entity DynatraceEntity, err error) // DeleteConfigById removes a given config for a given API using its id. // It calls the DELETE endpoint for the API. E.g. for alerting profiles this would be: // DELETE <environment-url>/api/config/v1/alertingProfiles/<id> ... to delete the config DeleteConfigById(a api.API, id string) error // ConfigExistsByName checks if a config with the given name exists for the given API. // It calls the underlying GET endpoint for the API. E.g. for alerting profiles this would be: // GET <environment-url>/api/config/v1/alertingProfiles ConfigExistsByName(ctx context.Context, a api.API, name string) (exists bool, id string, err error) }
ConfigClient is responsible for the classic Dynatrace configs. For settings objects, the SettingsClient is responsible. Each config endpoint is described by an [API] object to describe endpoints, structure, and behavior.
type DownloadSettingsObject ¶
type DownloadSettingsObject struct { ExternalId string `json:"externalId"` SchemaVersion string `json:"schemaVersion"` SchemaId string `json:"schemaId"` ObjectId string `json:"objectId"` Scope string `json:"scope"` Value json.RawMessage `json:"value"` ModificationInfo *SettingsModificationInfo `json:"modificationInfo"` }
DownloadSettingsObject is the response type for the ListSettings operation
type DummyClient ¶
type DummyClient struct { Fs afero.Fs RequestOutputDir string // contains filtered or unexported fields }
func (*DummyClient) ConfigExistsByName ¶
func (*DummyClient) CreatedObjects ¶ added in v2.6.0
func (c *DummyClient) CreatedObjects() int
func (*DummyClient) DeleteConfigById ¶
func (c *DummyClient) DeleteConfigById(a api.API, id string) error
func (*DummyClient) DeleteSettings ¶
func (c *DummyClient) DeleteSettings(_ string) error
func (*DummyClient) FetchSchemasConstraints ¶ added in v2.6.0
func (c *DummyClient) FetchSchemasConstraints(_ string) (constraints SchemaConstraints, err error)
func (*DummyClient) GetEntries ¶ added in v2.6.0
func (c *DummyClient) GetEntries(a api.API) ([]DataEntry, bool)
func (*DummyClient) GetSettingById ¶
func (c *DummyClient) GetSettingById(_ string) (*DownloadSettingsObject, error)
func (*DummyClient) ListConfigs ¶
func (*DummyClient) ListSchemas ¶
func (c *DummyClient) ListSchemas() (SchemaList, error)
func (*DummyClient) ListSettings ¶
func (c *DummyClient) ListSettings(_ context.Context, _ string, _ ListSettingsOptions) ([]DownloadSettingsObject, error)
func (*DummyClient) ReadConfigById ¶
func (*DummyClient) UpsertConfigByName ¶
func (c *DummyClient) UpsertConfigByName(_ context.Context, a api.API, name string, data []byte) (entity DynatraceEntity, err error)
func (*DummyClient) UpsertConfigByNonUniqueNameAndId ¶
func (c *DummyClient) UpsertConfigByNonUniqueNameAndId(_ context.Context, a api.API, entityId string, name string, data []byte) (entity DynatraceEntity, err error)
func (*DummyClient) UpsertSettings ¶
func (c *DummyClient) UpsertSettings(_ context.Context, obj SettingsObject, _ UpsertSettingsOptions) (DynatraceEntity, error)
type DynatraceClient ¶
type DynatraceClient struct {
// contains filtered or unexported fields
}
DynatraceClient is the default implementation of the HTTP client targeting the relevant Dynatrace APIs for Monaco
func NewClassicClient ¶
func NewClassicClient(dtURL string, client *rest.Client, opts ...func(dynatraceClient *DynatraceClient)) (*DynatraceClient, error)
NewClassicClient creates a new dynatrace client to be used for classic environments
func NewPlatformClient ¶
func NewPlatformClient(dtURL string, classicURL string, client *rest.Client, classicClient *rest.Client, opts ...func(dynatraceClient *DynatraceClient)) (*DynatraceClient, error)
NewPlatformClient creates a new dynatrace client to be used for platform enabled environments
func (*DynatraceClient) ConfigExistsByName ¶
func (*DynatraceClient) DeleteConfigById ¶
func (d *DynatraceClient) DeleteConfigById(api api.API, id string) (err error)
func (*DynatraceClient) DeleteSettings ¶
func (d *DynatraceClient) DeleteSettings(objectID string) (err error)
func (*DynatraceClient) FetchSchemasConstraints ¶ added in v2.6.0
func (d *DynatraceClient) FetchSchemasConstraints(schemaID string) (constraints SchemaConstraints, err error)
func (*DynatraceClient) GetSettingById ¶
func (d *DynatraceClient) GetSettingById(objectId string) (res *DownloadSettingsObject, err error)
func (*DynatraceClient) ListConfigs ¶
func (*DynatraceClient) ListSchemas ¶
func (d *DynatraceClient) ListSchemas() (schemas SchemaList, err error)
func (*DynatraceClient) ListSettings ¶
func (d *DynatraceClient) ListSettings(ctx context.Context, schemaId string, opts ListSettingsOptions) (res []DownloadSettingsObject, err error)
func (*DynatraceClient) ReadConfigById ¶
func (*DynatraceClient) UpsertConfigByName ¶
func (d *DynatraceClient) UpsertConfigByName(ctx context.Context, api api.API, name string, payload []byte) (entity DynatraceEntity, err error)
func (*DynatraceClient) UpsertConfigByNonUniqueNameAndId ¶
func (d *DynatraceClient) UpsertConfigByNonUniqueNameAndId(ctx context.Context, api api.API, entityId string, name string, payload []byte) (entity DynatraceEntity, err error)
func (*DynatraceClient) UpsertSettings ¶
func (d *DynatraceClient) UpsertSettings(ctx context.Context, obj SettingsObject, options UpsertSettingsOptions) (result DynatraceEntity, err error)
type DynatraceEntity ¶
type ListSettingsFilter ¶
type ListSettingsFilter func(DownloadSettingsObject) bool
ListSettingsFilter can be used to filter fetched settings objects with custom criteria, e.g. o.ExternalId == ""
type ListSettingsOptions ¶
type ListSettingsOptions struct { // DiscardValue specifies whether the value field of the returned // settings object shall be included in the payload DiscardValue bool // ListSettingsFilter can be set to pre-filter the result given a special logic Filter ListSettingsFilter }
ListSettingsOptions are additional options for the ListSettings method of the Settings client
type Properties ¶
type Properties struct {
Version *string `json:"version"`
}
type SchemaConstraints ¶ added in v2.6.0
type SchemaList ¶
type SchemaList []struct { SchemaId string `json:"schemaId"` }
type SchemaListResponse ¶
type SchemaListResponse struct { Items SchemaList `json:"items"` TotalCount int `json:"totalCount"` }
SchemaListResponse is the response type returned by the ListSchemas operation
type SettingsClient ¶
type SettingsClient interface { // UpsertSettings either creates the supplied object, or updates an existing one. // First, we try to find the external-id of the object. If we can't find it, we create the object, if we find it, we // update the object. UpsertSettings(context.Context, SettingsObject, UpsertSettingsOptions) (DynatraceEntity, error) // ListSchemas returns all schemas that the Dynatrace environment reports ListSchemas() (SchemaList, error) FetchSchemasConstraints(schemaID string) (SchemaConstraints, error) // ListSettings returns all settings objects for a given schema. ListSettings(context.Context, string, ListSettingsOptions) ([]DownloadSettingsObject, error) // GetSettingById returns the setting with the given object ID GetSettingById(string) (*DownloadSettingsObject, error) // DeleteSettings deletes a settings object giving its object ID DeleteSettings(string) error }
SettingsClient is the abstraction layer for CRUD operations on the Dynatrace Settings API. Its design is intentionally not dependent on Monaco objects.
This interface exclusively accesses the settings api of Dynatrace.
The base mechanism for all methods is the same: We identify objects to be updated/deleted by their external-id. If an object can not be found using its external-id, we assume that it does not exist. More documentation is written in each method's documentation.
type SettingsObject ¶
type SettingsObject struct { // Coordinate holds all the information for Monaco to identify a settings object Coordinate coordinate.Coordinate // SchemaId is the Dynatrace settings schema ID SchemaId, SchemaVersion, Scope string // Content is the rendered config for the given settings object Content []byte // OriginObjectId is the object id of the Settings object when it was downloaded from an environment OriginObjectId string }
SettingsObject contains all the information necessary to create/update a settings object
type SyntheticEntity ¶
type SyntheticEntity struct {
EntityId string `json:"entityId"`
}
type SyntheticLocationResponse ¶
type SyntheticLocationResponse struct {
Locations []SyntheticValue `json:"locations"`
}
type SyntheticMonitorsResponse ¶
type SyntheticMonitorsResponse struct {
Monitors []SyntheticValue `json:"monitors"`
}
type SyntheticValue ¶
type UpsertSettingsOptions ¶ added in v2.8.1
type UpsertSettingsOptions struct {
OverrideRetry *rest.RetrySetting
}
type Value ¶
type Value struct { Id string `json:"id"` Name string `json:"name"` // Owner is used by dashboards to indicate the creator of the dashboard. We use it to filter Dynatrace created dashboards. Owner *string `json:"owner,omitempty"` // Type is used by synthetic-locations to indicate whether it is a PRIVATE location or not. Type *string `json:"type,omitempty"` }
type ValuesResponse ¶
type ValuesResponse struct {
Values []Value `json:"values"`
}