From cf9beae8d01884e44b10a55f0df8072cf1022301 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 12 Jun 2024 11:17:37 -0700 Subject: [PATCH] Add option to install pth450 support --- files/70-dracal.rules | 13 ++++++++++++ manifests/init.pp | 11 ++++++++++ manifests/pth450.pp | 48 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 files/70-dracal.rules create mode 100644 manifests/pth450.pp diff --git a/files/70-dracal.rules b/files/70-dracal.rules new file mode 100644 index 0000000..8c444cf --- /dev/null +++ b/files/70-dracal.rules @@ -0,0 +1,13 @@ +# This file is managed by Puppet; changes may be overwritten. +SUBSYSTEM=="usb", ATTR{idVendor}=="1781", ATTR{idProduct}=="0a98", GROUP="dialout", MODE="0664" +SUBSYSTEM=="usb", ATTR{idVendor}=="289b", ATTR{idProduct}=="0500", GROUP="dialout", MODE="0664" +SUBSYSTEM=="usb", ATTR{idVendor}=="289b", ATTR{idProduct}=="0501", GROUP="dialout", MODE="0664" +SUBSYSTEM=="usb", ATTR{idVendor}=="289b", ATTR{idProduct}=="0502", GROUP="dialout", MODE="0664" +SUBSYSTEM=="usb", ATTR{idVendor}=="289b", ATTR{idProduct}=="0503", GROUP="dialout", MODE="0664" +SUBSYSTEM=="usb", ATTR{idVendor}=="289b", ATTR{idProduct}=="0504", GROUP="dialout", MODE="0664" +SUBSYSTEM=="usb", ATTR{idVendor}=="289b", ATTR{idProduct}=="0505", GROUP="dialout", MODE="0664" +SUBSYSTEM=="usb", ATTR{idVendor}=="289b", ATTR{idProduct}=="0506", GROUP="dialout", MODE="0664" +SUBSYSTEM=="usb", ATTR{idVendor}=="289b", ATTR{idProduct}=="0507", GROUP="dialout", MODE="0664" +SUBSYSTEM=="usb", ATTR{idVendor}=="289b", ATTR{idProduct}=="0508", GROUP="dialout", MODE="0664" +SUBSYSTEM=="usb", ATTR{idVendor}=="289b", ATTR{idProduct}=="0509", GROUP="dialout", MODE="0664" +SUBSYSTEM=="usb", ATTR{idVendor}=="289b", ATTR{idProduct}=="0510", GROUP="dialout", MODE="0664" diff --git a/manifests/init.pp b/manifests/init.pp index 034515b..9b322cc 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -20,6 +20,8 @@ # True to install shutter utilities. # @param ft4232h # true or false to enable ft4232h. +# @param pth450 +# True to install Dracal USB-PTH450 sensor support. # @param pkgurl # String specifying URL to fetch sources from. # @param pkgurl_user @@ -35,6 +37,7 @@ Variant[Boolean,String] $filter_changer = false, Boolean $aiousb = false, Boolean $ft4232h = false, + Boolean $pth450 = false, Boolean $shutter = false, String $pkgurl = 'https://example.org', Variant[Sensitive[String[1]],String[1]] $pkgurl_user = Sensitive('someuser'), @@ -56,6 +59,10 @@ $opts = Hash(flatten($opts1)) + ## Frequently needed on HCUs. + ## The -devel packages in the ccs_hcu role (easier due to crb repo). + ensure_packages(['libusb']) + class { 'ccs_hcu::power': ensure => present, quadbox => $quadbox, @@ -88,4 +95,8 @@ if $aiousb { include ccs_hcu::aiousb } + + if $pth450 { + include ccs_hcu::pth450 + } } diff --git a/manifests/pth450.pp b/manifests/pth450.pp new file mode 100644 index 0000000..8fd8f5f --- /dev/null +++ b/manifests/pth450.pp @@ -0,0 +1,48 @@ +# @summary +# Install Dracal USB pth450 support. +# +# @param tarfile +# Name of tarfile to install. +# +class ccs_hcu::pth450 ( + String $tarfile = 'dracalview-client-bin-3.2.2.tar.xz', +) { + $ptitle = regsubst($title, '::.*', '', 'G') + + $bindir = '/usr/local/bin' + + archive { "/var/tmp/${tarfile}": + ensure => present, + source => "${ccs_hcu::pkgurl}/${tarfile}", + username => $ccs_hcu::pkgurl_user.unwrap, + password => $ccs_hcu::pkgurl_pass.unwrap, + extract => true, + extract_path => $bindir, + extract_command => 'tar --no-same-owner -axf %s', + cleanup => false, + user => 'root', + group => 'root', + ## It creates some other files too. + creates => "${bindir}/dracal-usb-get", + } + + ## Add udev rule to set permissions. + $udev = '70-dracal.rules' + + file { "/etc/udev/rules.d/${udev}": + ensure => 'file', + source => "puppet:///modules/${ptitle}/${udev}", + notify => Exec['udevadm pth450'], + } + + exec { 'udevadm pth450': + path => ['/usr/sbin', '/usr/bin'], + # lint:ignore:strict_indent + command => @("CMD"/L), + sh -c 'udevadm control --reload-rules && \ + udevadm trigger --type=devices --action=change' + | CMD + # lint:endignore + refreshonly => true, + } +}