Skip to content
Open
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
6 changes: 3 additions & 3 deletions .github/workflows/publish_charm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
outputs:
charm-dirs: ${{ steps.charm-dirs.outputs.charm-dirs }}
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v6.0.3
- id: charm-dirs
run: |
echo charm-dirs=`find -name charmcraft.yaml | xargs dirname | jq --raw-input --slurp 'split("\n") | map(select(. != ""))'` >> $GITHUB_OUTPUT
Expand All @@ -30,7 +30,7 @@ jobs:
name: Publish Charm (${{ matrix.charm-dir }})
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v6.0.3
- name: Remove Android SDK
run: sudo rm -rf /usr/local/lib/android
- name: change directory
Expand Down Expand Up @@ -101,7 +101,7 @@ jobs:
runs-on: ubuntu-24.04
needs: [publish-charm]
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v6.0.3
- uses: canonical/charming-actions/release-libraries@2.7.0
name: Release libs
with:
Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,19 @@ on:
jobs:
unit-tests:
name: Unit Tests
permissions:
contents: read
pull-requests: write
uses: canonical/operator-workflows/.github/workflows/test.yaml@main
secrets: inherit
with:
self-hosted-runner: false
vale-style-check: false
integration-tests:
name: Integration Tests
permissions:
contents: read
packages: write
uses:
canonical/operator-workflows/.github/workflows/integration_test.yaml@main
secrets: inherit
Expand All @@ -32,9 +38,11 @@ jobs:
microk8s-addons: "dns registry:size=40Gi rbac storage ingress"
check-connector-sync:
name: Check Connectors
permissions:
contents: read
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v6.0.3
- uses: actions/setup-python@v6.2.0
with:
python-version: '3.14'
Expand All @@ -43,6 +51,8 @@ jobs:
- run: git diff --exit-code
allure-report:
if: ${{ !cancelled() && github.event_name == 'schedule' }}
permissions:
contents: write
needs:
- integration-tests
uses: canonical/operator-workflows/.github/workflows/allure_report.yaml@main
14 changes: 14 additions & 0 deletions .lychee.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Lychee configuration

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Lychee configuration
# Copyright 2026 Canonical Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Lychee configuration

fail_on_link_fragments = false

[cache]
request_timeout = 30

[ignore_patterns]
# Ignore local files that don't exist yet
exclude = []

# Accept these status codes
[fallback_accept_status_codes]
accept = [100, 101, 200, 201, 202, 203, 204, 205, 206, 300, 301, 302, 303, 304, 305, 306, 307, 308]

4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ This document explains the processes and practices recommended for contributing
- If you would like to chat with us about your use-cases or proposed implementation, you can reach
us at [Canonical Matrix public channel](https://matrix.to/#/#charmhub-charmdev:ubuntu.com)
or [Discourse](https://discourse.charmhub.io/).
- Familiarizing yourself with the [Charmed Operator Framework](https://juju.is/docs/sdk) library
- Familiarizing yourself with the [Charmed Operator Framework](https://canonical.com/juju/docs/ops/latest/) library
will help you a lot when working on new features or bug fixes.
- All enhancements require review before being merged. Code review typically examines
- code quality
Expand All @@ -20,7 +20,7 @@ This document explains the processes and practices recommended for contributing

## Developing

To make contributions to this charm, you'll need a working [development setup](https://canonical-juju.readthedocs-hosted.com/en/latest/user/howto/manage-your-deployment/manage-your-deployment-environment/#set-things-up).
To make contributions to this charm, you'll need a working [development setup](https://canonical.com/juju/docs/juju-cli/3.6/howto/manage-your-deployment/).

The code for this charm can be downloaded as follows:

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
[![Promote charm](https://github.com/canonical/opencti-operator/actions/workflows/promote_charm.yaml/badge.svg)](https://github.com/canonical/opencti-operator/actions/workflows/promote_charm.yaml)
[![Discourse Status](https://img.shields.io/discourse/status?server=https%3A%2F%2Fdiscourse.charmhub.io&style=flat&label=CharmHub%20Discourse)](https://discourse.charmhub.io)

A [Juju](https://juju.is/) [charm](https://canonical-juju.readthedocs-hosted.com/en/3.6/user/reference/charm/)
A [Juju](https://juju.is/) [charm](https://canonical.com/juju/docs/juju-cli/3.6/reference/charm/)
for deploying and managing the [OpenCTI](https://filigran.io/solutions/open-cti/)
open source threat intelligence platform in your systems.

Expand All @@ -36,7 +36,7 @@
a virtual machine with 4 CPUs, 8 GB RAM, and 50 GB disk space.

### Set up
You can follow the tutorial [here](https://canonical-juju.readthedocs-hosted.com/en/latest/user/howto/manage-your-deployment/manage-your-deployment-environment/#manage-your-deployment-environment)
You can follow the tutorial [here](https://canonical.com/juju/docs/juju-cli/3.6/howto/manage-your-deployment/)

Check warning on line 39 in README.md

View workflow job for this annotation

GitHub Actions / docs-checks / vale

[vale] reported by reviewdog 🐶 [Canonical.027-non-descriptive-link-text] Use descriptive link text instead of '[here](https://canonical.com/juju/docs/juju-cli/3.6/howto/manage-your-deployment/)' to improve accessibility. Raw Output: {"message": "[Canonical.027-non-descriptive-link-text] Use descriptive link text instead of '[here](https://canonical.com/juju/docs/juju-cli/3.6/howto/manage-your-deployment/)' to improve accessibility.", "location": {"path": "README.md", "range": {"start": {"line": 39, "column": 29}}}, "severity": "WARNING"}
to set up a test environment for Juju.

### Deploy databases on the VM model
Expand All @@ -60,7 +60,7 @@
juju integrate self-signed-certificates opensearch
```
### Create Juju offers
Next, we will create some [offers](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/offer/)
Next, we will create some [offers](https://canonical.com/juju/docs/juju-cli/3.6/reference/offer/)
for cross-model integrations.

```bash
Expand Down
2 changes: 1 addition & 1 deletion connector-template/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/abuseipdb_ipblacklist/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/alienvault/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/cisa_kev/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/crowdstrike/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/cyber_campaign/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/export_file_csv/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/export_file_stix/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/export_file_txt/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/import_document/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/import_file_stix/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/ipinfo/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/malwarebazaar/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/misp_feed/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/mitre/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/nti/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/sekoia/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/urlhaus/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/urlscan/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/urlscan_enrichment/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/virustotal_livehunt/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/vxvault/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion connectors/woap/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ops==3.7.0
ops==3.7.1
2 changes: 1 addition & 1 deletion docs/how-to/observability.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# How to integrate with COS

The OpenCTI charm exposes standard [COS](https://charmhub.io/topics/canonical-observability-stack)
integration [endpoints](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/application/#application-endpoint).
integration [endpoints](https://canonical.com/juju/docs/juju-cli/3.6/reference/application/#application-endpoint).

These include:

Expand Down
2 changes: 1 addition & 1 deletion docs/how-to/upgrade.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# How to upgrade the OpenCTI charm

Use the [`juju refresh`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/juju-cli/list-of-juju-cli-commands/refresh/)
Use the [`juju refresh`](https://canonical.com/juju/docs/juju-cli/3.6/howto/manage-your-deployment/)
command to upgrade the OpenCTI charm. No additional operations are required for
the upgrade process.
2 changes: 1 addition & 1 deletion docs/reference/actions.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

See [Actions](https://charmhub.io/opencti/actions).

> Read more about actions in the Juju docs: [Action](https://juju.is/docs/juju/action)
> Read more about actions in the Juju docs: [Action](https://documentation.ubuntu.com/juju/3.6/reference/action/)
40 changes: 20 additions & 20 deletions docs/reference/charm-architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

The charm design leverages the [sidecar](https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns/#example-1-sidecar-containers)
pattern to allow multiple containers in each pod with
[Pebble](https://juju.is/docs/sdk/pebble) running as the workload containers
[Pebble](https://ubuntu.com/docs/pebble/) running as the workload container's
entrypoint.

Pebble is a lightweight, API-driven process supervisor that is responsible for
Expand Down Expand Up @@ -112,11 +112,11 @@ C4Component

## OCI images

We use [Rockcraft](https://canonical-rockcraft.readthedocs-hosted.com/en/latest/) to build OCI Images for the OpenCTI charm.
We use [Rockcraft](https://documentation.ubuntu.com/rockcraft/latest/) to build OCI Images for the OpenCTI charm.
The images are defined in the [OpenCTI rock](https://github.com/canonical/opencti-operator/blob/main/opencti_rock/rockcraft.yaml).
They are published to [Charmhub](https://charmhub.io/), the official repository of charms.

> See more: [How to publish your charm on Charmhub](https://juju.is/docs/sdk/publishing)
> See more: [How to publish your charm on Charmhub](https://documentation.ubuntu.com/charmcraft/stable/howto/#publish-charms-and-manage-releases)

## Containers

Expand All @@ -126,7 +126,7 @@ Configuration files for the containers can be found in the respective directorie

The `opencti` container runs the OpenCTI platform and OpenCTI workers.
In every container, one instance of OpenCTI platform and three instances of
OpenCTI workers are running. The ratio is recommended by the [OpenCTI deployment guide](https://docs.opencti.io/latest/deployment/clustering/).
OpenCTI workers are running. The ratio is recommended by the [OpenCTI deployment guide](https://docs.opencti.io/latest/deployment/advanced/clustering/).

The workload that this container is running is defined in the [OpenCTI rock](https://github.com/canonical/opencti-operator/blob/main/opencti_rock/rockcraft.yaml).

Expand All @@ -138,33 +138,33 @@ OpenCTI platform in the OpenCTI charm is [configured to expose prometheus on por

For this charm, the following Juju events are observed:

1. [`config-changed`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/hook/#config-changed)
2. [`upgrade-charm`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/hook/#upgrade-charm)
3. [`update-status`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/hook/#update-status)
4. [`secret-changed`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/hook/#secret-changed)
5. [`opencti-pebble-ready`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/hook/#container-pebble-ready)
6. [`opencti-peer-relation-created`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/hook/#endpoint-relation-created)
7. [`opencti-peer-relation-changed`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/hook/#endpoint-relation-changed)
8. [`opencti-peer-relation-departed`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/hook/#endpoint-relation-departed)
9. [`opencti-peer-relation-broken`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/hook/#endpoint-relation-broken)
10. [`opencti-pebble-custom-notice`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/hook/#container-pebble-custom-notice)
11. [`opencti-connector-relation-joined`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/hook/#endpoint-relation-joined)
12. [`opencti-connector-relation-changed`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/hook/#endpoint-relation-changed)
13. [`stop`](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/hook/#stop)
1. [`config-changed`](https://documentation.ubuntu.com/juju/3.6/reference/hook/#config-changed)
2. [`upgrade-charm`](https://documentation.ubuntu.com/juju/3.6/reference/hook/#upgrade-charm)
3. [`update-status`](https://documentation.ubuntu.com/juju/3.6/reference/hook/#update-status)
4. [`secret-changed`](https://documentation.ubuntu.com/juju/3.6/reference/hook/#secret-changed)
5. [`opencti-pebble-ready`](https://documentation.ubuntu.com/juju/3.6/reference/hook/#container-pebble-ready)
6. [`opencti-peer-relation-created`](https://documentation.ubuntu.com/juju/3.6/reference/hook/#endpoint-relation-created)
7. [`opencti-peer-relation-changed`](https://documentation.ubuntu.com/juju/3.6/reference/hook/#endpoint-relation-changed)
8. [`opencti-peer-relation-departed`](https://documentation.ubuntu.com/juju/3.6/reference/hook/#endpoint-relation-departed)
9. [`opencti-peer-relation-broken`](https://documentation.ubuntu.com/juju/3.6/reference/hook/#endpoint-relation-broken)
10. [`opencti-pebble-custom-notice`](https://documentation.ubuntu.com/juju/3.6/reference/hook/#container-pebble-custom-notice)
11. [`opencti-connector-relation-joined`](https://documentation.ubuntu.com/juju/3.6/reference/hook/#endpoint-relation-joined)
12. [`opencti-connector-relation-changed`](https://documentation.ubuntu.com/juju/3.6/reference/hook/#endpoint-relation-changed)
13. [`stop`](https://documentation.ubuntu.com/juju/3.6/reference/hook/#stop)

In addition, the charm libraries can observe many other events. For more
details, see the documentation for the charm libraries.

> See more in the Juju docs: [Hook](https://documentation.ubuntu.com/juju/latest/reference/hook/)
> See more in the Juju docs: [Hook](https://documentation.ubuntu.com/juju/3.6/reference/hook/)

## Charm code overview

The `src/charm.py` is the default entry point for a charm and has the
`OpenCTICharm` Python class which inherits from CharmBase. CharmBase is the
base class from which all Charms are formed, defined by [Ops](https://juju.is/docs/sdk/ops)
base class from which all Charms are formed, defined by [Ops](https://canonical.com/juju/docs/ops/latest/)
(Python framework for developing charms).

> See more in the Juju docs: [Charm](https://canonical-juju.readthedocs-hosted.com/en/latest/user/reference/charm/)
> See more in the Juju docs: [Charm](https://canonical.com/juju/docs/juju-cli/3.6/reference/charm/)

The `__init__` method guarantees that the charm observes all events relevant to its operation and handles them.

Expand Down
2 changes: 1 addition & 1 deletion docs/reference/configurations.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

See [Configurations](https://charmhub.io/opencti/configurations).

> Read more about configurations in the Juju docs: [Configuration](https://juju.is/docs/juju/configuration)
> Read more about configurations in the Juju docs: [Configuration](https://documentation.ubuntu.com/juju/3.6/reference/configuration/)
4 changes: 4 additions & 0 deletions linkcheck_results.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Error: Cannot parse inputs from arguments

Caused by:
Input 'docs/' not found as file and not a valid URL. Use full URL (e.g., https://example.com) or check file path.
Loading
Loading