Bug 2240313 - Review Request: prometheus-podman-exporter - prometheus exporter for podman
Summary: Review Request: prometheus-podman-exporter - prometheus exporter for podman
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Robert-André Mauchin 🐧
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-09-23 03:08 UTC by Navid Yaghoobi
Modified: 2023-10-20 08:49 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2023-10-20 08:49:12 UTC
Type: ---
Embargoed:
zebob.m: fedora-review+


Attachments (Terms of Use)

Description Navid Yaghoobi 2023-09-23 03:08:35 UTC
Requesting for review:

Spec URL: https://github.com/navidys/prometheus-podman-exporter-rpm/blob/main/prometheus-podman-exporter.spec

SRPM URL: https://koji.fedoraproject.org/koji/taskinfo?taskID=106564706

Description: Prometheus exporter for podman environment.
Prometheus exporter for podman v4.x environment exposing containers, pods, images, volumes and networks information.

prometheus-podman-exporter uses the podman v4.x (libpod) library to fetch the statistics and therefore no need to enable podman.socket service unless using the container image.

The source code is available under https://github.com/containers/prometheus-podman-exporter and I am the codeowner as well.

Fedora Account System Username: navidys

Comment 1 Robert-André Mauchin 🐧 2023-10-01 13:03:00 UTC
I encourage you to go2rpm for the initial draft for Fedora.

 - We use SPDX for License: now.

 - No bundling unless good reason.

 - %{__install} should not be used, it is for private RPM use.


Should look like this:


# Generated by go2rpm 1.9.0
%bcond_without check
%bcond_without bundled
%if 0%{?rhel}
%bcond_without bundled
%endif

%if %{with bundled}
%global gomodulesmode   GO111MODULE=on
%endif

# https://github.com/containers/prometheus-podman-exporter
%global goipath         github.com/containers/prometheus-podman-exporter
Version:                1.4.0

%gometa -f

%global goname prometheus-podman-exporter

%global common_description %{expand:
Prometheus exporter for podman environments exposing containers, pods, images,
volumes and networks information.}

%global golicenses      LICENSE
%global godocs          CODE_OF_CONDUCT.md CONTRIBUTING.md MAINTAINERS.md\\\
                        README.md SECURITY.md

Name:           %{goname}
Release:        %autorelease
Summary:        Prometheus exporter for podman environment

# License for github.com/containers/prometheus-podman-exporter: Apache-2.0
# License for dario.cat/mergo: BSD-3-Clause
# License for github.com/acarl005/stripansi: MIT
# License for github.com/asaskevich/govalidator: MIT
# License for github.com/Azure/go-ansiterm: MIT
# License for github.com/beorn7/perks: MIT
# License for github.com/blang/semver/v4: MIT
# License for github.com/BurntSushi/toml: MIT
# License for github.com/cespare/xxhash/v2: MIT
# License for github.com/checkpoint-restore/checkpointctl: Apache-2.0
# License for github.com/checkpoint-restore/go-criu/v6: Apache-2.0
# License for github.com/chzyer/readline: MIT
# License for github.com/cilium/ebpf: MIT
# License for github.com/container-orchestrated-devices/container-device-interface: Apache-2.0
# License for github.com/containerd/containerd: Apache-2.0
# License for github.com/containernetworking/cni: Apache-2.0
# License for github.com/containernetworking/plugins: Apache-2.0
# License for github.com/containers/buildah: Apache-2.0
# License for github.com/containers/common: Apache-2.0
# License for github.com/containers/conmon: Apache-2.0
# License for github.com/containers/image/v5: Apache-2.0
# License for github.com/containers/libtrust: Apache-2.0
# License for github.com/containers/ocicrypt: Apache-2.0
# License for github.com/containers/podman/v4: Apache-2.0
# License for github.com/containers/psgo: Apache-2.0
# License for github.com/coreos/go-systemd: Apache-2.0
# License for github.com/coreos/go-systemd/v22: Apache-2.0
# License for github.com/cyberphone/json-canonicalization: Apache-2.0
# License for github.com/cyphar/filepath-securejoin: BSD-3-Clause
# License for github.com/davecgh/go-spew: ISC
# License for github.com/disiqueira/gotree/v3: MIT
# License for github.com/docker/distribution: Apache-2.0
# License for github.com/docker/docker: Apache-2.0
# License for github.com/docker/docker-credential-helpers: MIT
# License for github.com/docker/go-connections: Apache-2.0
# License for github.com/docker/go-plugins-helpers: Apache-2.0
# License for github.com/docker/go-units: Apache-2.0
# License for github.com/fsnotify/fsnotify: BSD-3-Clause
# License for github.com/fsouza/go-dockerclient: BSD-2-Clause
# License for github.com/go-kit/log: MIT
# License for github.com/go-logfmt/logfmt: MIT
# License for github.com/go-openapi/analysis: Apache-2.0
# License for github.com/go-openapi/errors: Apache-2.0
# License for github.com/go-openapi/jsonpointer: Apache-2.0
# License for github.com/go-openapi/jsonreference: Apache-2.0
# License for github.com/go-openapi/loads: Apache-2.0
# License for github.com/go-openapi/runtime: Apache-2.0
# License for github.com/go-openapi/spec: Apache-2.0
# License for github.com/go-openapi/strfmt: Apache-2.0
# License for github.com/go-openapi/swag: Apache-2.0
# License for github.com/go-openapi/validate: Apache-2.0
# License for github.com/godbus/dbus/v5: BSD-2-Clause
# License for github.com/gogo/protobuf: BSD-3-Clause
# License for github.com/golang/protobuf: BSD-3-Clause
# License for github.com/google/go-containerregistry: Apache-2.0
# License for github.com/google/gofuzz: Apache-2.0
# License for github.com/google/shlex: Apache-2.0
# License for github.com/google/uuid: BSD-3-Clause
# License for github.com/gorilla/mux: BSD-3-Clause
# License for github.com/gorilla/schema: BSD-3-Clause
# License for github.com/hashicorp/errwrap: MPL-2.0
# License for github.com/hashicorp/go-multierror: MPL-2.0
# License for github.com/inconshreveable/mousetrap: Apache-2.0
# License for github.com/jinzhu/copier: MIT
# License for github.com/josharian/intern: MIT
# License for github.com/jpillora/backoff: MIT
# License for github.com/json-iterator/go: MIT
# License for github.com/klauspost/compress: BSD-3-Clause AND Apache-2.0 AND MIT
# License for github.com/klauspost/pgzip: MIT AND BSD-3-Clause
# License for github.com/kr/fs: BSD-3-Clause
# License for github.com/letsencrypt/boulder: MPL-2.0
# License for github.com/mailru/easyjson: MIT
# License for github.com/manifoldco/promptui: BSD-3-Clause
# License for github.com/mattn/go-runewidth: MIT
# License for github.com/mattn/go-shellwords: MIT
# License for github.com/mattn/go-sqlite3: MIT
# License for github.com/matttproud/golang_protobuf_extensions: Apache-2.0
# License for github.com/Microsoft/go-winio: MIT
# License for github.com/miekg/pkcs11: BSD-3-Clause
# License for github.com/mitchellh/mapstructure: MIT
# License for github.com/moby/patternmatcher: Apache-2.0
# License for github.com/moby/sys/mountinfo: Apache-2.0
# License for github.com/moby/sys/sequential: Apache-2.0
# License for github.com/moby/term: Apache-2.0
# License for github.com/modern-go/concurrent: Apache-2.0
# License for github.com/modern-go/reflect2: Apache-2.0
# License for github.com/morikuni/aec: MIT
# License for github.com/mwitkow/go-conntrack: Apache-2.0
# License for github.com/nxadm/tail: MIT
# License for github.com/oklog/ulid: Apache-2.0
# License for github.com/opencontainers/go-digest: Apache-2.0 AND CC-BY-SA-4.0
# License for github.com/opencontainers/image-spec: Apache-2.0
# License for github.com/opencontainers/runc: Apache-2.0
# License for github.com/opencontainers/runtime-spec: Apache-2.0
# License for github.com/opencontainers/runtime-tools: Apache-2.0
# License for github.com/opencontainers/selinux: Apache-2.0
# License for github.com/openshift/imagebuilder: Apache-2.0
# License for github.com/ostreedev/ostree-go: ISC
# License for github.com/pkg/errors: BSD-2-Clause
# License for github.com/pkg/sftp: BSD-2-Clause
# License for github.com/pmezard/go-difflib: BSD-3-Clause
# License for github.com/proglottis/gpgme: BSD-3-Clause
# License for github.com/prometheus/client_golang: Apache-2.0
# License for github.com/prometheus/client_model: Apache-2.0
# License for github.com/prometheus/common: Apache-2.0
# License for github.com/prometheus/exporter-toolkit: Apache-2.0
# License for github.com/prometheus/procfs: Apache-2.0
# License for github.com/rivo/uniseg: MIT
# License for github.com/seccomp/libseccomp-golang: BSD-2-Clause
# License for github.com/sigstore/fulcio: Apache-2.0
# License for github.com/sigstore/rekor: Apache-2.0
# License for github.com/sigstore/sigstore: Apache-2.0
# License for github.com/sirupsen/logrus: MIT
# License for github.com/spf13/cobra: Apache-2.0
# License for github.com/spf13/pflag: BSD-3-Clause
# License for github.com/stefanberger/go-pkcs11uri: Apache-2.0
# License for github.com/sylabs/sif/v2: BSD-3-Clause
# License for github.com/syndtr/gocapability: BSD-2-Clause
# License for github.com/theupdateframework/go-tuf: BSD-3-Clause
# License for github.com/titanous/rocacheck: MIT
# License for github.com/ulikunitz/xz: BSD-3-Clause
# License for github.com/vbatts/tar-split: BSD-3-Clause
# License for github.com/vbauerster/mpb/v8: Unlicense
# License for github.com/vishvananda/netlink: Apache-2.0
# License for github.com/vishvananda/netns: Apache-2.0
# License for github.com/VividCortex/ewma: MIT
# License for go.etcd.io/bbolt: MIT
# License for go.mongodb.org/mongo-driver: Apache-2.0
# License for go.mozilla.org/pkcs7: MIT
# License for golang.org/x/crypto: BSD-3-Clause
# License for golang.org/x/exp: BSD-3-Clause
# License for golang.org/x/mod: BSD-3-Clause
# License for golang.org/x/net: BSD-3-Clause
# License for golang.org/x/oauth2: BSD-3-Clause
# License for golang.org/x/sync: BSD-3-Clause
# License for golang.org/x/sys: BSD-3-Clause
# License for golang.org/x/term: BSD-3-Clause
# License for golang.org/x/text: BSD-3-Clause
# License for golang.org/x/tools: BSD-3-Clause
# License for google.golang.org/appengine: Apache-2.0
# License for google.golang.org/genproto: Apache-2.0
# License for google.golang.org/grpc: Apache-2.0
# License for google.golang.org/protobuf: BSD-3-Clause
# License for gopkg.in/go-jose/go-jose.v2: Apache-2.0
# License for gopkg.in/inf.v0: BSD-3-Clause
# License for gopkg.in/square/go-jose.v2: Apache-2.0
# License for gopkg.in/tomb.v1: BSD-3-Clause
# License for gopkg.in/yaml.v2: Apache-2.0 AND MIT
# License for gopkg.in/yaml.v3: MIT AND Apache-2.0
# License for sigs.k8s.io/yaml: MIT AND BSD-3-Clause
License:        Apache-2.0 AND MPL-2.0 AND BSD-3-Clause AND BSD-2-Clause AND MIT AND Unlicense AND CC-BY-SA-4.0 AND ISC
URL:            %{gourl}
Source:         %{gosource}
Source:         vendor-%{version}.tar.gz
Source:         bundle_go_deps_for_rpm.sh

%if 0%{?fedora} && ! 0%{?rhel}
BuildRequires: pkgconfig(libbtrfsutil)
%endif
BuildRequires: gcc
BuildRequires: glibc-devel
BuildRequires: glibc-static
BuildRequires: git-core
BuildRequires: make
BuildRequires: pkgconfig(devmapper)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gpgme)
BuildRequires: pkgconfig(libassuan)
%if 0%{?fedora} >= 37
BuildRequires: shadow-utils-subid-devel
%endif

%description %{common_description}

%prep
%goprep %{?with_bundledc:-k}
%if %{with bundled}
%setup -q -T -D -a 1 -n %{name}-%{version}
%endif
%autopatch -p1

%if %{without bundled}
%generate_buildrequires
%go_generate_buildrequires
%endif

%build
%if %{with bundled}
export GOFLAGS="-mod=vendor"
%endif
%gobuild -o %{gobuilddir}/bin/prometheus-podman-exporter %{goipath}

%install
install -m 0755 -vd                     %{buildroot}%{_bindir}
install -m 0755 -vp %{gobuilddir}/bin/* %{buildroot}%{_bindir}/
install -m 0755 -vd                     %{buildroot}%{_unitdir}
install -m 0755 -vd                     %{buildroot}%{_userunitdir}
install -m 0644 -vp ./contrib/systemd/%{name}.service %{buildroot}%{_unitdir}/%{name}.service
install -m 0644 -vp ./contrib/systemd/%{name}.service %{buildroot}%{_userunitdir}/%{name}.service

%post
%systemd_user_post %{name}.service
%systemd_post %{name}.service

%preun
%systemd_user_preun %{name}.service
%systemd_preun %{name}.service

%if %{with check}
%check
%gocheck
%endif

%files
%license LICENSE
%doc CODE_OF_CONDUCT.md CONTRIBUTING.md MAINTAINERS.md README.md SECURITY.md
%{_bindir}/%{name}
%{_unitdir}/%{name}.service
%{_userunitdir}/%{name}.service

%changelog
%autochangelog


You can find the bundling script here: https://pagure.io/GoSIG/tools/blob/main/f/bundle_go_deps_for_rpm.sh


The following packages are missing:

No matching package to install: 'golang(github.com/containers/common/libnetwork/types)'
No matching package to install: 'golang(github.com/containers/image/v5/docker/reference)'
No matching package to install: 'golang(github.com/containers/podman/v4/cmd/podman/registry)'
No matching package to install: 'golang(github.com/containers/podman/v4/libpod/define)'
No matching package to install: 'golang(github.com/containers/podman/v4/pkg/domain/entities)'

Works is being done on containerd but we're behind schedule, you could build bundled for now.

Needinfo me with your fixes.

Comment 2 Navid Yaghoobi 2023-10-03 07:54:44 UTC
Thanks a lot @zebob.m for the review and useful information provided.

I have updated the spec with the fixes: https://github.com/navidys/prometheus-podman-exporter-rpm/blob/main/prometheus-podman-exporter.spec

SRPM: https://koji.fedoraproject.org/koji/taskinfo?taskID=107012672

Comment 3 Robert-André Mauchin 🐧 2023-10-18 17:36:55 UTC
LGTM, pakcage approved.

Comment 4 Fedora Admin user for bugzilla script actions 2023-10-20 07:58:06 UTC
The Pagure repository was created at https://src.fedoraproject.org/rpms/prometheus-podman-exporter

Comment 5 Fedora Update System 2023-10-20 08:47:44 UTC
FEDORA-2023-5ed088cc27 has been submitted as an update to Fedora 40. https://bodhi.fedoraproject.org/updates/FEDORA-2023-5ed088cc27

Comment 6 Fedora Update System 2023-10-20 08:49:12 UTC
FEDORA-2023-5ed088cc27 has been pushed to the Fedora 40 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.