meshStack

meshStack

  • User Docs
  • Administrator Docs
  • API Docs
  • Release Notes
  • Feedback

›OpenStack

Getting Started

  • How to get started with meshStack
  • AWS S3 Quickstart Guide
  • AKS Platform Quickstart Guide
  • AKS Developer Platform Guide

Concepts

  • Overview
  • Administration Roles
  • Onboarding
  • meshWorkspaces
  • meshProjects
  • meshTenants
  • Replication Configuration
  • Delete Tenants
  • meshUsers
  • meshPlatforms
  • Landing Zones
  • Open Service Brokers (OSB)
  • Guide: Emergency Users
  • Managing Tags
  • Policies
  • Unmanaged Tenants
  • meshStack Settings
  • Workspace Services
  • API Users
  • DNS and SSL Certificates
  • Customizing
  • Product Feedback Collection

Identity & Access

  • Identity and Access Management
  • Identity Provider
  • Identity Lookup
  • Authorization
  • User & Group LDAP Synchronisation
  • User & Group SCIM Synchronisation

Building Blocks

  • Building Blocks
  • Private Runners
  • Terraform/OpenTofu state managed by meshStack
  • Permission Delegation on AWS
  • Connecting meshStack and a Pipeline

Metering & Billing

  • Cost Management
  • Configuration

Amazon Web Services

  • Integration
  • Landing Zones
  • Metering
  • SSO Setup
  • Reserved Instances & Savings Plans Guide

Microsoft Azure

  • Integration
  • Landing Zones
  • Metering

Google Cloud Platform

  • Integration
  • Landing Zones
  • Metering

Cloud Foundry

  • Integration
  • Metering

Kubernetes

  • Integration
  • Landing Zones
  • Metering

GitHub

  • Pipeline Automation
  • Repository Provisioning

OpenShift

  • Integration
  • Landing Zones
  • Metering

OpenStack

  • Integration
  • Metering

OSB Services

  • Integration
  • Metering
  • meshcloud OSB API Profile
  • Tenant Services
  • Tutorial: Implement a Broker

Operations

  • Managed Service
  • Email
  • Logging & Auditing
  • Monitoring & Telemetry
  • Backup
  • Security FAQ

Guides

  • How to integrate a meshPlatform into meshStack
  • How to manually integrate AWS as meshPlatform
  • How to manually integrate Azure as meshPlatform
  • How to manually integrate GCP as meshPlatform
  • How to create your own platform
  • How to manage partner level permissions
  • How to use scoped API keys
  • How to setup and manage a Building block
Edit

Metering

meshStack supports metering and billing for the most common types of OpenStack resources. Metering is based on periodically sampling resource state from the platform's API.

The accuracy of sampling-based metering naturally depends on the sampling interval. While insufficient for supporting a per-second billing model, it works very well for billing resources on a per-hour billing model.

Prerequisites

  • OpenStack admin user with suitable read-only permissions for all projects
  • OpenStack APIs are accessible by meshStack metering collector components

Supported Resources

Resources with the following traits are addressable in the Product Catalog. Platform Operators or Partners can use the traits of these resources to define fine-granular product and pricing rules.

Neutron - Floating IP

Dhall Type
Example
let FloatingIpResourceTraits =
{-
This type has no traits. However you can still create products charging for the resource's existence.
-}

{}
let example
: FloatingIpResourceTraits
= {=}

Neutron - Router

Dhall Type
Example
let RouterResourceTraits =
{-
This type has no traits. However you can still create products charging for the resource's existence.
-}

{}
let example
: RouterResourceTraits
= {=}

Neutron - Load Balancer

Dhall Type
Example
let LoadBalancerResourceTraits =
{-
listeners:
Number of load balancer listeners

operatingStatus:
Operating status of the load balancer. One of ONLINE, OFFLINE, DEGRADED, ERROR, NO_MONITOR.

pools:
Number of load balancer backend pools

provider:
The loadbalancer provider
-}

{ listeners : Optional Integer
, operatingStatus : Optional Text
, pools : Optional Integer
, provider : Optional Text
}
let example
: LoadBalancerResourceTraits
= { listeners = Some +1
, operatingStatus = Some "OFFLINE"
, pools = Some +1
, provider = Some "octavia"
}

Cinder - Volume Snapshot

Dhall Type
Example
let VolumeSnapshotResourceTraits =
{-
availabilityZone:
Availability zone of the volume snapshot

replicationStatus:
Replication status of the volume

status:
Status of the volume snapshot, see https://docs.openstack.org/api-ref/block-storage/v3/#volume-snapshots-snapshots

volumeSize:
Size of the volume snapshot in GiB
-}

{ availabilityZone : Optional Text
, replicationStatus : Optional Text
, status : Text
, volumeSize : Integer
}
let example
: VolumeSnapshotResourceTraits
= { availabilityZone = Some "eu-west"
, replicationStatus = Some ""
, status = "available"
, volumeSize = +10
}

Cinder - Volume

Dhall Type
Example
let VolumeResourceTraits =
{-
availabilityZone:
Availability zone of the volume

replicationStatus:
Replication status of the volume

size:
Size of the volume in GiB

status:
Status of the volume, see https://docs.openstack.org/api-ref/block-storage/v3/#volumes-volumes

type:
Type of the volume
-}

{ availabilityZone : Optional Text
, replicationStatus : Optional Text
, size : Integer
, status : Text
, type : Optional Text
}
let example
: VolumeResourceTraits
= { availabilityZone = Some "eu-west"
, replicationStatus = Some ""
, size = +10
, status = "in-use"
, type = Some "ssd"
}

Glance - Image

Dhall Type
Example
let ImageResourceTraits =
{-
service:
The Glance backend service storing the image.

size:
The size of the image in GiB.

status:
Image status, see https://docs.openstack.org/glance/pike/user/statuses.html
-}

{ service : Optional Text, size : Optional Integer, status : Text }
let example
: ImageResourceTraits
= { service = Some "cinder", size = Some +10, status = "active" }

Nova - Server

Dhall Type
Example
let VirtualMachineResourceTraits =
{-
disk:
Virtual machine disk size in GiB

diskEphemeral:
Virtual machine ephemeral disk size in GiB

diskRoot:
Virtual machine root disk size in GiB

flavor:
Name of the flavor (not id)

ramMb:
RAM size of the virtual machine in MiB

state:
Virtual machine state

vcpu:
Number of virtual CPUs
-}

{ disk : Optional Integer
, diskEphemeral : Optional Integer
, diskRoot : Optional Integer
, flavor : Optional Text
, ramMb : Optional Integer
, state : Text
, vcpu : Optional Integer
}
let example
: VirtualMachineResourceTraits
= { disk = Some +20
, diskEphemeral = Some +20
, diskRoot = Some +20
, flavor = Some "v4.large"
, ramMb = Some +1024
, state = ""
, vcpu = Some +4
}
Last updated on 1/5/2024
← IntegrationIntegration →
  • Prerequisites
  • Supported Resources
    • Neutron - Floating IP
    • Neutron - Router
    • Neutron - Load Balancer
    • Cinder - Volume Snapshot
    • Cinder - Volume
    • Glance - Image
    • Nova - Server
meshStack
Docs
User DocumentationAdministrator DocumentationSecurity FAQ
Get in Touch
SupportWebsiteLinkedIn
More
Release NotesGitHub
Copyright © 2025 meshcloud GmbH