• Logo
    Ops
  • juju.is
  • More resources
    • Discourse
    • Matrix
    • GitHub
Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
Ops documentation
Ops documentation
  • Tutorials
    • Write your first machine charm
    • From zero to hero: Write your first Kubernetes charm
      • Study your application
      • Set up your development environment
      • Create a minimal Kubernetes charm
      • Make your charm configurable
      • Integrate your charm with PostgreSQL
      • Expose operational tasks via actions
      • Observe your charm with COS Lite
  • How-to guides
    • Manage charms
    • Write and structure charm code
    • Write unit tests for a charm
    • Write integration tests for a charm
    • Log from your charm
    • Run workloads with a machine charm
    • Run workloads with a Kubernetes charm
    • Manage storage
    • Manage resources
    • Manage actions
    • Manage configuration
    • Manage relations
    • Manage leadership changes
    • Manage libraries
    • Manage interfaces
    • Manage secrets
    • Manage stored state
    • Manage opened ports
    • Manage the charm version
    • Manage the workload version
    • Manage metrics
    • Trace your charm
    • Make your charm discoverable
    • Legacy how-to guides
      • Migrate unit tests from Harness
      • Turn a hooks-based charm into an ops charm
  • Reference
    • ops.main entry point
    • ops
    • ops.pebble
    • ops.testing (was: Scenario)
    • ops.testing.Harness (legacy unit testing)
    • ops.tracing
    • ops.hookcmds
  • Explanation
    • Charm-relation-interfaces
    • Testing
    • Tracing
    • Holistic vs delta charms
    • How, and when, to defer events
    • Security
    • Charm maturity
    • StoredState: Uses, Limitations
    • State-transition testing
    • Tool versions
Back to top

Legacy how-to guides¶

These guides cover deprecated approaches to charming.

Harness¶

Harness is a deprecated framework for writing unit tests. You should migrate to state-transition tests.

  • Migrate unit tests from Harness

Hooks-based charms¶

Hooks-based charms use script files instead of Python code with Ops. You should migrate to Ops.

  • Turn a hooks-based charm into an ops charm
Copyright © 2025, Canonical Ltd.
Last updated on Oct 23, 2025
Manage your tracker settings
Contents
  • Legacy how-to guides
    • Harness
    • Hooks-based charms