Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Contributing to SquaredUp Community Plugins

First off, thanks for taking the time to contribute! :+1:

SquaredUp actively encourages external contributions so that the project can develop in such a way that benefits the wider SquaredUp community.

As a contributor, here are the guidelines we would like you to follow:

* [Code of Conduct](#coc)
* [Question or Problem?](#question)
* [Found a problem?](#problem)
* [Suggest a feature?](#request)
* [Contributing enhancements and plugins](#contribute)
* [Submission Guidelines](#submit)


## <a name="coc"></a> Code of Conduct

Help us keep SquaredUp Samples open and inclusive.
Please read and follow our [Code of Conduct](CODE_OF_CONDUCT.md).

## <a name="question"></a> Got a question?

Please do not open issues for general support questions as we want to keep GitHub issues for bug reports and requests.

Please use [SquaredUp Community Answers](https://community.squaredup.com) to ask questions. The forums provide

* direct access to many people with extensive experience with SquaredUp
* public viewing so your question and its answer can help someone else
* central location where you and others can search for previously asked questions and answers

## <a name="problem"></a>Found a problem?
If you find a bug or a problem, you can help us by:

* [Submit an support ticket](https://docs.squaredup.com/submit-ticket) with as much information as possible.
* Even better, create a Pull Request with a fix!

## <a name="request"></a> Suggesting features and ideas
Is there a plugin you need, but aren't able to develop? Does a plugin need an enhancement? Then [submit a feedback](https://feedback.squaredup.com/plugins), please provide lots of details to help us build it!

## <a name="contribute"></a>Contributing enhancements and plugins
If there is an enhancement you want to make to an existing plugin or a cool new plugin you want to contribute then please submit a Pull Request with your work.

### <a name="submit"></a> Submitting a Pull Request (PR)
Before you submit your Pull Request (PR) consider the following guidelines:

1. Search [GitHub](pulls) for an open or closed PR that relates to your submission. You don't want to duplicate effort.
2. Read the [documentation](README.md) and explore the existing plugins for best practice guidance.
3. For creating pull requests see - [Creating a pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request)
4. Make sure you pull request is appropriately described, and contains all the required files and documentation for review.

That's it, thank you for your contribution! :+1:
87 changes: 55 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# SquaredUp Plugin Repository
# SquaredUp Community Plugins Repository

This repository contains third-party/community plugins for the SquaredUp Observability Portal product.
This repository contains third-party/community plugins for [SquaredUp](https://squaredup.com).

## License

Expand All @@ -12,26 +12,19 @@ Please read and adhere to our [Code of Conduct](./CODE_OF_CONDUCT.md) document b

## Introduction

This repository is a read-only copy of the documentation and test tools inside SquaredUp's main plugins repository. This contains the
information you will need to understand the process involved in developing a plugin for the SquaredUp Observability Portal product.
It contains tooling for you to make a start on developing a plugin. However, in order actually to install a plugin into the SquareUp
product, you will need to engage with SquaredUp by emailing hello@squaredup.com.
Plugins are vital components of SquaredUp. Each plugin bundles up everything involved in the interaction with a specific third party system, namely:

SquaredUp Cloud plugins are vital components of the SquaredUp Unified Observability Portal product. Each
plugin bundles up everything involved in the interaction with a specific third party system, namely:

- The ability to import objects from an external system into the Observability Portal's Data Mesh.
- The ability to import objects from an external system into SquaredUp.
- The ability to read data upon demand from an external system for displaying in dashboards and/or for use in the evaluation of monitors.

Plugins are installed into the Observability Portal product as part of the product build process managed by SquaredUp. Once installed, they appear within the Data Source Gallery in the product:
Plugins are installed into SquaredUp as part of the product build process. Once installed, they appear within the Data Source List in the product:

![DataSourceGallery](docs/images/DataSourceGallery.jpg)
![DataSourceList](docs/images/DataSourceGallery.jpg)

## Execution Environments

A plugin may be executed in a cloud environment as part of the Observability Portal product or on a machine within a customer's premises (upon which the customer has installed a Relay Agent). If both environments are equally suitable for a plugin, it can
be declared as "hybrid" (in which case, two separate plugins will appear in the Data Source Gallery, one with the suffix
" On-Premise" automatically added).
A plugin may be executed within SquaredUp's SaaS environment or on a machine within a customer's premises (upon which the customer has installed a Relay Agent). If both environments are equally suitable for a plugin, it can
be declared as "hybrid" (in which case, two separate plugins will appear in the Data Source list, one with the label "On-Prem" added).

Javascript (NodeJS) is currently the implementation language/runtime with fullest capability, but PowerShell may be chosen for plugins which will only run On-Premise. We plan to support support other languages at some point in the future.

Expand All @@ -46,22 +39,52 @@ A plugin is a directory in this repo of the form `plugins/`_plugin-name_`/v1` co
- `metadata.json` - a file containing high-level information about the plugin (for example: the execution location of the plugin, or the information that appears in the Data Source Gallery, above).
- `ui.json` - a file describing the configuration that must be shown to a user who is in the process of adding the plugin to their tenant to connect with an instance of the back end system.
- `custom_types.json` (Optional) - a file containing information about non-standard object types that will be imported by the plugin into the Data Mesh.
- `data_streams.json` - a file describing the streams of on demand data that the Observability Portal can request of the plugin.
- `data_streams.json` - a file describing the streams of on demand data that SquaredUp can request of the plugin.
- `handler.js` and `package.json` the executable code of the plugin.

## How to write a plugin

The suggested way to write a new plugin is to make a copy of the `examplePlugins/hybrid/v1` directory in your `plugins/`_plugin-name_`/v1` directory and then tailor the configuration and code to interact with the specific back end as required.

This process is described in more detail in [Writing a New Plugin](docs/writingANewPlugin.md).

## Testing your plugin

There are 2 main ways to test your plugin:

1. Using the SquaredUp Test/Validation Script (`validate.js` at the root of this repo)
2. Testing within the SquaredUp Unified Observability Portal product. You would need to engage with SquaredUp to gain access to the private plugins repository before this means of testing is available to you. Contact hello@squaredup.com for more details.

You should aim to do as much testing as possible with the `validate.js` script as the turn-around time is much quicker.

This process is described in more detail in [Testing a Plugin](docs/testingAPlugin.md).
## Writing a Plugin

1. **Clone the Repository:**
First, clone the repository to your local machine:
```bash
git clone https://github.com/squaredup/squaredup-plugin-public.git
cd squaredup-plugin-public
```
2. **Create a New Branch:**
You will need to create a new branch for your changes:
```bash
git checkout -b add-new-plugin # Replace Branch Name
```
3. **Creating the Plugin Folder:**
The suggested way to write a new plugin is to make a copy of the `examplePlugins/hybrid/v1` directory in your `plugins/`_plugin-name_`/v1` directory.
```bash
# Replace 'ExamplePlugin' with your plugin name
mkdir -p 'plugins/ExamplePlugin/v1'
cp -r 'examplePlugins/hybrid/v1/*' 'plugins/ExamplePlugin/v1/'
```
4. **Tailoring the Example Plugin:**
You will need to tailor the configuration and code to interact with the specific back end as Required.
This process is described in more detail in [Writing a New Plugin](docs/writingANewPlugin.md).
5. **Testing the Plugin:** There are two main ways to test your plugin.
1. Using the SquaredUp Test/Validation Script (`validate.js` at the root of this repo):
```bash
npm ci
npm run validate
```
2. Using the SquaredUp Unit Test Framework which can be executed by running:
```bash
npm ci
# Replace 'ExamplePlugin' with your plugin name
npm test -- --pluginName="ExamplePlugin" --pluginPath="plugins/ExamplePlugin/v1"
```
You should aim to do as much testing as possible with the `validate.js` script as the turn-around time is much quicker.
This process is described in more detail in [Testing a Plugin](docs/testingAPlugin.md).
6. **Installation**
The plugin is only installed when a Pull Request has been submitted. During PR creation you will be
asked for your Tenant (Organization) Name which can be retrieved from the [settings page](https://app.squaredup.com/settings/organization).
This will be used for restricting the plugin to the specified tenant only.
Once the PR is approved and merged, the plugin will be available for everyone.

## Contributing

We greatly appreciate your interest in contributing to this repository! To help you get started, please take a look at our detailed contribution guidelines in the [CONTRIBUTING](CONTRIBUTING.md) document.
Binary file modified docs/images/DataSourceGallery.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 27 additions & 0 deletions resource.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
terraform {
required_providers {
squaredup = {
source = "registry.terraform.io/squaredup/squaredup"
}
}
}
provider "squaredup" {
region = "us"
api_key = "bIMYMcZJ9tlAFslAq0q0"
}

resource "squaredup_workspace" "application_workspace" {
display_name = "Application Team"
description = "Workspace with Dashboards for Application Team"
//auto link
}

resource "squaredup_workspace" "devops_workspace" {
display_name = "DevOps Team"
description = "Workspace with Dashboards for DevOps Team"
type = "application"
tags = ["terraform", "auto-created"]
workspaces_links = ["space-123"] //only link so disable auto link
}

workspaces_links = [] #disable auto link
Loading