Name:           ansible-collection-netbox_community-ansible_modules
Version:        0.1.6
Release:        1%{?dist}
Summary:        Miscellaneous modules for Ansible Playbooks

# note: The netbox collection has inconsistent licensing!  There's an MIT
# license file but the headers to all of the source code say GPLv3+. So it's
# probably all GPLv3+ (unless the author has permission to get all of the code
# relicensed)
License:        MIT and GPLv3+

URL:            https://galaxy.ansible.com/netbox_community/ansible_modules

### Checkout from source because the collection hosted on galaxy isn't truly
### a source container.  There could be build scripts that generate the
### collection from the repository chckout.  ### There could be compiled ansible
### modules in there....
# Generated via:
# git clone https://github.com/netbox-community/ansible_modules
# pushd ansible_modules
### This depends on upstream having tagged their releases appropriately.  With other
### upstreams you may find that you have to checkout a commit hash or package everything
### as snapshots.
# git checkout v0.1.6
# popd
# mv ansible_modules ansible-collection-netbox_community-ansible_modules-0.1.6
# tar -czvf ansible-collection-netbox_community-ansible_modules-0.1.6.tar.gz ansible-collection-netbox_community-ansible_modules-0.1.6
Source0:        ansible-collection-netbox_community-ansible_modules-0.1.6.tar.gz

### By and large, collections will be noarch.  But ansible modules can be
### compiled and even with other types of ansible plugins, they can contain
### python extension modules(which are compiled) so these won't always be noarch
BuildArch: noarch

### For /usr/bin/ansible-galaxy
BuildRequires:  ansible
### Directory ownership and these plugins will be useless without ansible to run them
Requires:       ansible

%description
This Ansible collection is a set of plugins for configuring netbox devices.

%prep
%autosetup

%build
### If this is an archful package (or even if it is noarch, it could still be more
### complicated than a simple checkout of the source repo), there may be a build
### step.  Every collection could be different.  One might use a Makefile for this,
### another might use cmake, etc.  The only commonality is that you'd want to run
### the build step here, before running ansible-galaxy collection build

### make CFLAGS=%%{optflags}

### Builds the contents of the current working directory into a collection tarball.
### At first, I anticipate that most collections will actually mirror what's in their
### git repo but over time you'll start to encounter collections which have a build
### step of some sort that generates some files prior to creating the collection.  You
### may end up having to run this command in a different directory or the upstream's
### build scripts may run this command for you
ansible-galaxy collection build

%install
rm -rf %{buildroot}
### In ansible-2.10::
### Use python_sitearch if the collection is arch-specific
### This feature is still being coded for 2.10 so the exact directory
### structure/names may still change.

### ansible-galaxy collection install \
###  -p %%{buildroot}%%{python_sitelib}/ \
###  ./netbox_community-ansible_modules-0.1.6.tar.gz

### In ansible-2.9, the ansible package comes configured with this in the
### collection path.  Unfortunately it's a noarch location so any archful
### collections can't go here.
### The ansible package could add the 2.10 locations to the configuration file
### to use the 2.10 locations but when a user upgrades, they may not see and
### merge the changes to the configuration file so you have to consider whether
### that is acceptable
ansible-galaxy collection install -vvvvv \
  -p %{buildroot}%{_datadir}/ansible/collections \
  ./netbox_community-ansible_modules-0.1.6.tar.gz

%check
### There should be a way to run the collection's test suite using ansible-test
### but I'm not familiar enough with this scenario to know if creating this
### directory hierarchy is the best way to accomplish this.

mkdir -p ansible_collections/netbox_community/ansible_modules
cp -pr tests plugins ansible_collections/netbox_community/ansible_modules
pushd ansible_collections/netbox_community/ansible_modules
ansible-test units --python %{python3_version}
popd

# integration tests aren't working under ansible-test yet.  I see from
# upstream's .travis.yml that they just run them with ansible-playbook so
# this might be a case where it differs from standard practice
# (Would also need more BuildRequires to run the integration tests.  Some
# integration tests might not be usable if they assume they can talk to the
# network)
#ansible-test integration

%files
# NOTE!  This LICENSE file says MIT but the headers on the source code say
# GPLv3+.  This needs to be corrected by upstream.  Perhaps we should include
# a copy of the GPLv3 until that is resolved
%defattr (0644, root, root, 0755)
%license LICENSE
%doc README.md CONTRIBUTING.md CHANGELOG.md
### Ansible-2.10+
### The ansible package should own these two directories:
###    %%{python_sitelib}/ansible_collections/
###    %%{python_sitearch}/ansible_collections/
### The complete directory structure looks something like this:
### %%{python_sitelib}
###         \ ansible_collections
###             \ netbox
###                 \ ansible_modules
###                   + README.md [Could be removed in install and placed in docdir instead]
###                   + COPYING   [Could be removed in install and placed in docdir instead]
###                   + Other files from the git repo [Also could be removed and placed
###                     elsewhere if they're needed.  The plugins directory is the only thing
###                     that ansible will use at runtime]
###                     \ plugins
###                         \ modules  [ There's other plugin types will have other subdirectories.
###                           module_utils, callback, cache, connection, etc]
###                             \ irc.py   [ The actual module files]
### %%{python_sitelib}/ansible_collections/netbox/

### Ansible-2.9
%{_datadir}/ansible/collections/ansible_collections/

%changelog
* Sat Feb 15 2020 Toshio Kuratomi <toshio@fedoraproject.org> - 0.1.6-1
- Initial cut.  There are possible bikesheds in here.  For instance, I don't
  know if ansible-collection-$NAMESPACE-$COLLECTION is the best naming standard