<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>How to(s) :: Chantico</title>
    <link>https://chantico-300062.ci.tno.nl/how-tos/index.html</link>
    <description>How to(s) The files contained in this documentation starting with how-to-... are there to help the developers / users using chantico.&#xA;Here is an overview:&#xA;How to install Chantico&#xA;How to register a physical snmp device&#xA;How to register an SNMP device type&#xA;How to register data center resources&#xA;How to run the mock snmp device&#xA;How to run the webapp</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <copyright>Copyright 2025-2026 TNO. Chantico is licensed under the &lt;a href=&#34;https://www.apache.org/licenses/LICENSE-2.0&#34;&gt;Apache License, Version 2.0&lt;/a&gt;. Published documentation is available under &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/deed.en&#34;&gt;CC-BY-SA 4.0&lt;/a&gt;.</copyright>
    <atom:link href="https://chantico-300062.ci.tno.nl/how-tos/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How to create new resources</title>
      <link>https://chantico-300062.ci.tno.nl/how-tos/how-to-create-new-resources/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://chantico-300062.ci.tno.nl/how-tos/how-to-create-new-resources/index.html</guid>
      <description>This guide describes how to add a new Kubernetes custom resource (CRD) to Chantico using Kubebuilder.&#xA;Prerequisites Install kubebuilder: curl -L -o kubebuilder &#34;https://go.kubebuilder.io/dl/latest/$(go env GOOS)/$(go env GOARCH)&#34; chmod +x kubebuilder &amp;&amp; sudo mv kubebuilder /usr/local/bin/ Make sure your local environment is set up: How to set up the local development environment Create the API and controller scaffolding Generate the resource scaffolding: kubebuilder create api --group chantico --version v1alpha1 --kind &lt;RESOURCE_TYPE&gt; Remove the generated integration tests (these are not used in this repo): rm internal/controller/suite_test.go internal/controller/&lt;resource_type&gt;_controller_test.go Define the schema Update the Go types in api/v1alpha1/&lt;resource&gt;_types.go: Add the Spec fields for the desired state. Add the Status fields for observed state. Add validation markers if needed. Regenerate code and manifests: make build Implement controller behavior Update the controller in internal/controller/&lt;resource&gt;_controller.go: Implement reconcile logic. Add required RBAC markers for the CRD. Add or adjust tests in internal/&lt;resource&gt;/ as needed. Apply to a cluster (optional) If you want to test against a running dev cluster:</description>
    </item>
    <item>
      <title>How to install Chantico</title>
      <link>https://chantico-300062.ci.tno.nl/how-tos/how-to-install-chantico/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://chantico-300062.ci.tno.nl/how-tos/how-to-install-chantico/index.html</guid>
      <description>Installation Getting the Chantico image Option A: Build and host image yourself make docker-build IMG=&lt;your-registry&gt;/chantico:&lt;tag&gt; Then host this image on a container registry of choice and make sure to synchronize credentials as listed in option (B).</description>
    </item>
    <item>
      <title>How to register a physical snmp device</title>
      <link>https://chantico-300062.ci.tno.nl/how-tos/how-to-register-a-physical-snmp-device/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://chantico-300062.ci.tno.nl/how-tos/how-to-register-a-physical-snmp-device/index.html</guid>
      <description>PhysicalMeasurement does not parse MIBs. It links a concrete device IP to an existing MeasurementDevice (SNMP module/auth definition) and writes Prometheus scrape config, then reloads Prometheus. In our First use-case (see goal.md) this corresponds to the createPDU1 and createPDU2 phases.&#xA;Ensure a matching MeasurementDevice exists (see how-to-register-an-snmp-device-type.md). Create the PhysicalMeasurement matching the required type of PhysicalMeasurement Create a physical_measurement.yaml file apiVersion: chantico.ci.tno.nl/v1alpha1 kind: PhysicalMeasurement metadata: labels: app.kubernetes.io/name: chantico app.kubernetes.io/managed-by: kustomize name: physicalmeasurement-pdu1-out namespace: chantico spec: ip: 10.5.1.1 serviceId: dee263f8-50e0-11f0-8cb5-00155d8a81e1 # This can be any type of UUID measurementDevice: schleifenbauer-out # This has to be a currently valid MeasurementDevice name Apply the yaml file kubectl apply -f physical_measurement.yaml Verify the new device setting Port-forward Prometheus kubectl port-forward -n chantico deployment/chantico-prometheus 9090:9090 Check that the config (http://localhost:9090/targets) If you are using ./dev/port-forward.sh, Prometheus is forwarded to localhost:19090 instead. If running the controller locally, ensure the port-forward and env vars are set so the operator can call the reload endpoint: export CHANTICO_PROMETHEUS_SERVICE_HOST=&#34;localhost&#34; export CHANTICO_PROMETHEUS_SERVICE_PORT=&#34;19090&#34;</description>
    </item>
    <item>
      <title>How to register an SNMP device type</title>
      <link>https://chantico-300062.ci.tno.nl/how-tos/how-to-register-an-snmp-device-type/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://chantico-300062.ci.tno.nl/how-tos/how-to-register-an-snmp-device-type/index.html</guid>
      <description>In the current setting, a type of device using SNMP is configured by uploading MIBs and defining a MeasurementDevice custom resource. The operator generates SNMP module config (snmp.yml) and triggers a reload of chantico-snmp. In our First use-case (see goal.md) this corresponds to the registerPDU phase.&#xA;Upload the MIBS: Port-forward the filebrowser kubectl port-forward -n chantico deployment/chantico-filebrowser 18888:80 Login with (user: admin, password: admin) Upload your MIBS files in snmp/mibs Create the MeasurementDevice matching the required type of MeasurementDevice Create a measurement_device.yaml file apiVersion: chantico.ci.tno.nl/v1alpha1 kind: MeasurementDevice metadata: labels: app.kubernetes.io/name: chantico app.kubernetes.io/managed-by: kustomize name: example-measurement-device namespace: chantico spec: auth: community: public version: 2 walks: - sdbDevInKWhTotal Apply the yaml file kubectl apply -f measurement_device.yaml Verify the new device setting Wait for the SNMP generator job to complete kubectl get jobs -n chantico | grep update-snmp The generated config is stored on the shared volume at snmp/yml/snmp.yml. Port-forward the SNMP exporter kubectl port-forward -n chantico deployment/chantico-snmp 9116:9116 Check that the config (http://localhost:9116/config) include the registered device as a module</description>
    </item>
    <item>
      <title>How to register data center resources</title>
      <link>https://chantico-300062.ci.tno.nl/how-tos/how-to-register-data-center-resources/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://chantico-300062.ci.tno.nl/how-tos/how-to-register-data-center-resources/index.html</guid>
      <description>In Chantico, one of the custom resources that can be provided is the data center resource. This resource defines which equipment and customer-facing services live in your cloud, such as PDUs, bare metals and VMs. The resource has relations to physical measurements, which define where the device can be monitored, such as IP address to scrape, and has a further reference to the measurement device, which describes how to monitor the type/brand of resource.</description>
    </item>
    <item>
      <title>How to run the mock snmp device</title>
      <link>https://chantico-300062.ci.tno.nl/how-tos/how-to-run-the-mock-snmp-device/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://chantico-300062.ci.tno.nl/how-tos/how-to-run-the-mock-snmp-device/index.html</guid>
      <description>The SNMP mock The snmp mock is an UDP server mocking a device using SNMP with an mock MIB file (./dev/TNO-PDU-MIB.txt) and providing the following metrics tnoPduEnergyValue and tnoPduPowerValue. This file details how to set up the mock device, and how to subsequently run a demo with it including both the PhysicalMeasurement and MeasurementDevice custom resources.&#xA;requirements Ensure you have followed the instructions in How to set up the local development environment to set up a local development environment. After this:</description>
    </item>
    <item>
      <title>How to run the webapp</title>
      <link>https://chantico-300062.ci.tno.nl/how-tos/how-to-run-webapp/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://chantico-300062.ci.tno.nl/how-tos/how-to-run-webapp/index.html</guid>
      <description>Webapp Chantico provides a webapp that visualizes the parent-child relationships of DataCenterResource objects. It requires access to a Kubernetes cluster that contains the CRD DataCenterResource.&#xA;TL;DR # Run webapp go run cmd/webapp/main.go Configuration We currently allow environment variables to configure the webapp:</description>
    </item>
    <item>
      <title>How to set-up the local development environment</title>
      <link>https://chantico-300062.ci.tno.nl/how-tos/how-to-setup-the-local-development-environment/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://chantico-300062.ci.tno.nl/how-tos/how-to-setup-the-local-development-environment/index.html</guid>
      <description>Prerequisites The development currently supports WSL2 and UNIX based environment.&#xA;It requires the following packages:&#xA;go version v1.24.13+ kind version v0.30.0+ docker version v17.03+ helm version 3.19+ make version 4.3+ kubectl version v0.30.0+ Installation Login your docker client:&#xA;docker login ci.tno.nl To install the kind docker cluster, run:</description>
    </item>
  </channel>
</rss>