%if 0%{?fedora} %global with_devel 1 %global with_bundled 1 %global with_debug 0 %global with_check 1 %global with_unit_test 1 %else %global with_devel 0 %global with_bundled 1 %global with_debug 0 %global with_check 1 %global with_unit_test 0 %endif # Determine if systemd will be used %if ( 0%{?fedora} && 0%{?fedora} > 16 ) || ( 0%{?rhel} && 0%{?rhel} > 6 ) %global with_systemd 1 %endif %if 0%{?with_debug} %global _dwz_low_mem_die_limit 0 %else %global debug_package %{nil} %endif %global provider github %global provider_tld com %global project heketi %global repo heketi # https://github.com/heketi/heketi %global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo} %global import_path %{provider_prefix} Name: %{repo} Version: 5.0.0 Release: 16%{?dist} Summary: RESTful based volume management framework for GlusterFS License: LGPLv3+ and GPLv2 URL: https://%{provider_prefix} Source0: https://%{provider_prefix}/archive/v%{version}.tar.gz Source1: https://%{provider_prefix}/releases/download/v%{version}/%{name}-deps-v%{version}.tar.gz Source2: %{name}.json Source3: %{name}.service Source4: %{name}.initd # Patches ported from upsteam heketi: Patch0001: 0001-addNode-Check-if-glusterd-is-running-on-the-peer-nod.patch Patch0002: 0002-Update-app_node_test.go.patch Patch0003: 0003-Fix-typo-in-manpage-of-heketi-cli.patch Patch0004: 0004-TSP-should-be-backup-volfile-server.patch Patch0005: 0005-check-for-self-heal-before-replaceBrick.patch Patch0006: 0006-return-if-unable-to-retrieve-entry-from-db.patch Patch0007: 0007-test-for-crash-in-node-setstate.patch Patch0008: 0008-Typo-Error-for-retrieve.patch Patch0009: 0009-Typo-Error-Retrieve-under-help-menu-for-Device.patch Patch0010: 0010-Typo-Error-Retrieve-under-help-menu-for-Node.patch Patch0011: 0011-Typo-Error-Retrieve-under-help-menu-for-Topology.patch Patch0012: 0012-Implement-block-volumes-with-gluster-block.patch Patch0013: 0013-introduce-bucket-to-manage-db-attributes.patch Patch0014: 0014-add-block-and-file-flags-to-cluster-on-upgrade.patch Patch0015: 0015-test-for-upgrade-mechanism-for-block-file-flags.patch # CNS-specific patches: # e.g. el6 has ppc64 arch without gcc-go, so EA tag is required ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}} # If go_compiler is not set to 1, there is no virtual provide. Use golang instead. BuildRequires: %{?go_compiler:compiler(go-compiler)}%{!?go_compiler:golang} Requires(pre): shadow-utils %if 0%{?with_systemd} BuildRequires: systemd Requires(post): systemd Requires(preun): systemd Requires(postun): systemd %else Requires(post): /sbin/chkconfig Requires(preun): /sbin/service Requires(preun): /sbin/chkconfig Requires(postun): /sbin/service %endif %description Heketi provides a RESTful management interface which can be used to manage the life cycle of GlusterFS volumes. With Heketi, cloud services like OpenStack Manila, Kubernetes, and OpenShift can dynamically provision GlusterFS volumes with any of the supported durability types. Heketi will automatically determine the location for bricks across the cluster, making sure to place bricks and its replicas across different failure domains. Heketi also supports any number of GlusterFS clusters, allowing cloud services to provide network file storage without being limited to a single GlusterFS cluster. %if 0%{?with_devel} %package devel Summary: %{summary} BuildArch: noarch %if 0%{?with_check} && ! 0%{?with_bundled} BuildRequires: golang(github.com/auth0/go-jwt-middleware) BuildRequires: golang(github.com/boltdb/bolt) BuildRequires: golang(github.com/codegangsta/negroni) BuildRequires: golang(github.com/dgrijalva/jwt-go) BuildRequires: golang(github.com/gorilla/context) BuildRequires: golang(github.com/gorilla/mux) BuildRequires: golang(github.com/lpabon/godbc) BuildRequires: golang(golang.org/x/crypto/ssh) BuildRequires: golang(golang.org/x/crypto/ssh/agent) %endif %if 0%{?with_bundled} && 0%{?fedora} Provides: bundled(golang(github.com/auth0/go-jwt-middleware)) = 8c897f7c3631a9e9405b9496fd8ce241acdef230 Provides: bundled(golang(github.com/boltdb/bolt)) = 980670afcebfd86727505b3061d8667195234816 Provides: bundled(golang(github.com/codegangsta/negroni)) = c7477ad8e330bef55bf1ebe300cf8aa67c492d1b Provides: bundled(golang(github.com/dgrijalva/jwt-go)) = 5ca80149b9d3f8b863af0e2bb6742e608603bd99 Provides: bundled(golang(github.com/gorilla/context)) = 215affda49addc4c8ef7e2534915df2c8c35c6cd Provides: bundled(golang(github.com/gorilla/mux)) = f15e0c49460fd49eebe2bcc8486b05d1bef68d3a Provides: bundled(golang(github.com/lpabon/godbc)) = 9577782540c1398b710ddae1b86268ba03a19b0c Provides: bundled(golang(golang.org/x/crypto/ssh)) = fcdb74e78f2621098ebc0376bbadffcf580ccfe4 Provides: bundled(golang(golang.org/x/crypto/ssh/agent)) = fcdb74e78f2621098ebc0376bbadffcf580ccfe4 %endif Provides: golang(%{import_path}/apps) = %{version}-%{release} Provides: golang(%{import_path}/apps/glusterfs) = %{version}-%{release} Provides: golang(%{import_path}/client/api/go-client) = %{version}-%{release} Provides: golang(%{import_path}/client/cli/go/commands) = %{version}-%{release} Provides: golang(%{import_path}/executors) = %{version}-%{release} Provides: golang(%{import_path}/executors/mockexec) = %{version}-%{release} Provides: golang(%{import_path}/executors/sshexec) = %{version}-%{release} Provides: golang(%{import_path}/middleware) = %{version}-%{release} Provides: golang(%{import_path}/rest) = %{version}-%{release} Provides: golang(%{import_path}/tests) = %{version}-%{release} Provides: golang(%{import_path}/utils) = %{version}-%{release} Provides: golang(%{import_path}/utils/ssh) = %{version}-%{release} %description devel %{summary} This package contains library source intended for building other packages which use import path with %{import_path} prefix. %endif %if 0%{?with_unit_test} && 0%{?with_devel} %package unit-test-devel Summary: Unit tests for %{name} package # If go_compiler is not set to 1, there is no virtual provide. Use golang instead. BuildRequires: %{?go_compiler:compiler(go-compiler)}%{!?go_compiler:golang} %if 0%{?with_check} #Here comes all BuildRequires: PACKAGE the unit tests #in %%check section need for running %endif # test subpackage tests code from devel subpackage Requires: %{name}-devel = %{version}-%{release} %description unit-test-devel %{summary} This package contains unit tests for project providing packages with %{import_path} prefix. %endif %package client Summary: Command line client for Heketi Group: System Environment/Libraries License: LGPLv3+ and GPLv2 %description client %{summary} Command line program to interact with Heketi %package -n python-heketi Summary: Python libraries for Heketi Group: System Environment/Libraries License: ASL 2.0 and LGPLv3+ Requires: python-jwt Requires: python-requests BuildRequires: python-setuptools BuildRequires: python2-devel %description -n python-heketi %{summary} This package contains python libraries for interacting with Heketi %prep %setup -q # upstream heketi patches %patch0001 -p1 -b .0001-addNode-Check-if-glusterd-is-running-on-the-peer-nod.patch %patch0002 -p1 -b .0002-Update-app_node_test.go.patch %patch0003 -p1 -b .0003-Fix-typo-in-manpage-of-heketi-cli.patch %patch0004 -p1 -b .0004-TSP-should-be-backup-volfile-server.patch %patch0005 -p1 -b .0005-check-for-self-heal-before-replaceBrick.patch %patch0006 -p1 -b .0006-return-if-unable-to-retrieve-entry-from-db.patch %patch0007 -p1 -b .0007-test-for-crash-in-node-setstate.patch %patch0008 -p1 -b .0008-Typo-Error-for-retrieve.patch %patch0009 -p1 -b .0009-Typo-Error-Retrieve-under-help-menu-for-Device.patch %patch0010 -p1 -b .0010-Typo-Error-Retrieve-under-help-menu-for-Node.patch %patch0011 -p1 -b .0011-Typo-Error-Retrieve-under-help-menu-for-Topology.patch %patch0012 -p1 -b .0012-Implement-block-volumes-with-gluster-block.patch %patch0013 -p1 -b .0013-introduce-bucket-to-manage-db-attributes.patch %patch0014 -p1 -b .0014-add-block-and-file-flags-to-cluster-on-upgrade.patch %patch0015 -p1 -b .0015-test-for-upgrade-mechanism-for-block-file-flags.patch # CNS-specific patches %build mkdir -p src/%{provider}.%{provider_tld}/%{project} ln -s $(pwd) src/%{provider}.%{provider_tld}/%{project}/%{repo} # ! Bundled %if ! 0%{?with_bundled} export GOPATH=$(pwd):%{gopath} export LDFLAGS="-X main.HEKETI_VERSION=%{version}" %gobuild -o %{name} export LDFLAGS="-X main.HEKETI_CLI_VERSION=%{version}" cd client/cli/go %gobuild -o %{name}-cli cd ../../.. %else # Bundled # workaround for vendor directory which doesn't have src # which is needed by the GOPATH mkdir -p ./src tar -xvf %{SOURCE1} -C ./src/ # Setup GOPATH export GOPATH=$(pwd):%{gopath} %define gohash %(head -c20 /dev/urandom | od -An -tx1 | tr -d '\ \\n') # -s strips debug information go build -ldflags "-X main.HEKETI_VERSION=%{version} -B 0x%{gohash} -s -extldflags '-z relro -z now'" -o %{name} cd client/cli/go go build -ldflags "-X main.HEKETI_CLI_VERSION=%{version} -X github.com/heketi/heketi/client/cli/go/cmds.HeketiStorageJobContainer=rhgs3/rhgs-volmanager-rhel7:3.3.0 -B 0x%{gohash} -s -extldflags '-z relro -z now'" -o %{name}-cli cd ../../.. %endif # Python cd client/api/python %{__python2} setup.py build %install # Python cd client/api/python %{__python2} setup.py install -O1 --skip-build --root %{buildroot} cd ../../.. install -D -p -m 0755 client/cli/go/%{name}-cli.sh \ %{buildroot}%{_datadir}/bash-completion/completions/%{name}-cli.sh install -D -p -m 0755 %{name} %{buildroot}%{_bindir}/%{name} install -D -p -m 0755 client/cli/go/%{name}-cli %{buildroot}%{_bindir}/%{name}-cli install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name} install -D -p -m 0644 etc/%{name}.json %{buildroot}%{_sysconfdir}/%{name}/%{name}.json install -D -p -m 0644 doc/man/heketi-cli.8 %{buildroot}%{_mandir}/man8/heketi-cli.8 install -D -p -m 0644 client/cli/go/topology-sample.json \ %{buildroot}%{_datadir}/%{name}/topology-sample.json %if 0%{?with_systemd} install -D -p -m 0644 %{SOURCE3} %{buildroot}%{_unitdir}/%{name}.service %else install -D -p -m 0755 %{SOURCE4} %{buildroot}%{_sysconfdir}/init.d/%{name} %endif # And create /var/lib/heketi install -d -m 0755 %{buildroot}%{_sharedstatedir}/%{name} # source codes for building projects %if 0%{?with_devel} install -d -p %{buildroot}/%{gopath}/src/%{import_path}/ echo "%%dir %%{gopath}/src/%%{import_path}/." >> devel.file-list # find all *.go but no *_test.go files and generate devel.file-list for file in $(find . -iname "*.go" \! -iname "*_test.go") ; do echo "%%dir %%{gopath}/src/%%{import_path}/$(dirname $file)" >> devel.file-list install -d -p %{buildroot}/%{gopath}/src/%{import_path}/$(dirname $file) cp -pav $file %{buildroot}/%{gopath}/src/%{import_path}/$file echo "%%{gopath}/src/%%{import_path}/$file" >> devel.file-list done %endif # testing files for this project %if 0%{?with_unit_test} && 0%{?with_devel} install -d -p %{buildroot}/%{gopath}/src/%{import_path}/ # find all *_test.go files and generate unit-test-devel.file-list for file in $(find . -iname "*_test.go"); do echo "%%dir %%{gopath}/src/%%{import_path}/$(dirname $file)" >> devel.file-list install -d -p %{buildroot}/%{gopath}/src/%{import_path}/$(dirname $file) cp -pav $file %{buildroot}/%{gopath}/src/%{import_path}/$file echo "%%{gopath}/src/%%{import_path}/$file" >> unit-test-devel.file-list done %endif %if 0%{?with_devel} sort -u -o devel.file-list devel.file-list %endif %check %if 0%{?with_check} && 0%{?with_unit_test} && 0%{?with_devel} %if ! 0%{?with_bundled} export GOPATH=%{buildroot}/%{gopath}:%{gopath} %gotest %{import_path}/apps/glusterfs %gotest %{import_path}/client/api/go-client %gotest %{import_path}/middleware %else export GOPATH=$(pwd):%{gopath} go test -v %{import_path}/apps/glusterfs go test -v %{import_path}/client/api/go-client go test -v %{import_path}/middleware go test -v %{import_path}/executors/kubeexec go test -v %{import_path}/executors/sshexec %endif %endif %pre getent group %{name} >/dev/null || groupadd -r %{name} getent passwd %{name} >/dev/null || useradd -r -g %{name} -d %{_sharedstatedir}/%{name} -s /sbin/nologin -c "heketi user" %{name} %post %if 0%{?with_systemd} %systemd_post %{name}.service %else /sbin/chkconfig --add %{name} %endif %preun %if 0%{?with_systemd} %systemd_preun %{name}.service %else /sbin/service %{name} stop &> /dev/null %endif %postun %if 0%{?with_systemd} %systemd_postun %{name}.service %else /sbin/chkconfig --del %{name} %endif #define license tag if not already defined %{!?_licensedir:%global license %doc} %files %license LICENSE %doc README.md AUTHORS %config(noreplace) %{_sysconfdir}/%{name} %{_bindir}/%{name} %dir %attr(-,%{name},%{name}) %{_sharedstatedir}/%{name} %if 0%{?with_systemd} %{_unitdir}/%{name}.service %else %{_sysconfdir}/init.d/%{name} %endif %files -n python-heketi %license LICENSE %doc README.md AUTHORS %{python_sitelib}/heketi %{python_sitelib}/heketi-*.egg-info %files client %license LICENSE %doc README.md AUTHORS %{_bindir}/%{name}-cli %{_datadir}/%{name}/topology-sample.json %{_mandir}/man8/heketi-cli.8* %{_datadir}/bash-completion/completions/%{name}-cli.sh %if 0%{?with_devel} %files devel -f devel.file-list %license LICENSE %doc README.md AUTHORS %dir %{gopath}/src/%{provider}.%{provider_tld}/%{project} %dir %{gopath}/src/%{import_path} %endif %if 0%{?with_unit_test} && 0%{?with_devel} %files unit-test-devel -f unit-test-devel.file-list %license LICENSE %doc README.md AUTHORS %endif %changelog * Wed Oct 04 2017 Raghavendra Talur - 5.0.0-16 - Resolves: #1497946 - after upgrade from cns 3.5 to 3.6, volume creation fails * Wed Sep 20 2017 Michael Adam - 5.0.0-15 - Resolves: #1490980 - Heketi pod stops working when beging restarted or deleted * Mon Sep 18 2017 Raghavendra Talur - 5.0.0-14 - Resolves: #1487645 - block-volume creation fails when one of the node is down in a 3 node RHGS cluster - Resolves: #1492533 - dynamic provisioning of block-volume creation fails * Mon Sep 18 2017 Raghavendra Talur - 5.0.0-13 - Resolves: #1487645 - block-volume creation fails when one of the node is down in a 3 node RHGS cluster * Sun Sep 17 2017 Raghavendra Talur - 5.0.0-12 - Resolves: #1487645 - block-volume creation fails when one of the node is down in a 3 node RHGS cluster * Mon Sep 11 2017 Raghavendra Talur - 5.0.0-11 - Resolves: #1479777 - Return proper status to caller when volume delete is attempted. * Sat Sep 02 2017 Raghavendra Talur - 5.0.0-10 - Resolves: #1486578 - pre-alloc full option should be set by default for all gluster-block devices - Resolves: #1485779 - heketi should set group gluster-block option for block-hosting volume - Resolves: #1480501 - heketi crashed when concurrent operations were performed * Thu Aug 24 2017 Raghavendra Talur - 5.0.0-9 - Resolves: #1483038 - cns-deployment fails at deploy-heketi phase * Fri Aug 18 2017 Mohamed Ashiq Liyazudeen - 5.0.0-8 - Resolves: #1432004 - device remove should check there are no pending heals before proceeding with the brick replacement - Resolves: #1433614 - cns-deploy fails in case there are "dos" partition signature on devices dedicated for bricks in topology file - Resolves: #1434668 - After a device is removed from heketi, status of the device reflects as 'failed', which is misleading. - Resolves: #1435530 - [device remove]: heketi volume info doesn't reflect new volfile server when device remove has replaced a device from a new node - Resolves: #1468091 - [GSS] Heketi can't detect all storage endpoints available - Resolves: #1472642 - Heketi : Node remove should wait if heal is in progress. - Resolves: #1479777 - Return proper status to caller when volume delete is attempted. * Mon Aug 07 2017 Mohamed Ashiq Liyazudeen - 5.0.0-7 - Resolves: #1473585 - typo in man heketi-cli - Resolves: #1477040 - ha count from Cli is not treated correctly in heketi block API - Resolves: #1441675 - adding node to cns may fail if one of the existing node is down - Resolves: #1468954 - heketi blockvolume delete fails to delete backend gluster block device but returns success - Resolves: #1475701 - Error from gluster-block is not propagted back to caller from heketi server. - Resolves: #1477431 - After Volume Expansion is completed successfully getting write error inside the volume * Wed Jul 26 2017 Raghavendra Talur - 5.0.0-6 - Resolves: #1468952 - heketi block API dont respect "ha" count in the request * Tue Jul 11 2017 Mohamed Ashiq Liyazudeen - 5.0.0-5 - Resolves: #1469360 - Initiators fail to detect gluster-block target * Thu Jul 06 2017 Mohamed Ashiq Liyazudeen - 5.0.0-4 - Resolves: #1468109 - provide a heketi image with auto_create_block_hosting_volume enabled by default * Tue Jul 04 2017 Raghavendra Talur - 5.0.0-3 - Resolves: #1467318 - Getting proxy error while deploying heketi pod(pod restarted) * Thu Jun 29 2017 Mohamed Ashiq Liyazudeen - 5.0.0-2 - Resolves: #1446069 - [RFE] Enable block volume creation in Heketi * Wed May 24 2017 Raghavendra Talur - 5.0.0-1 - Resolves: #1440900 - [RFE] Support Volume expansion in Heketi - Resolves: #1349875 - [RFE] heketi-cli should support replacement of a failed node * Mon Apr 24 2017 Raghavendra Talur - 4.0.0-9 - Resolves: #1444457 - rebuild heketi to point to new rhgs-volmanager-docker image * Fri Apr 21 2017 Raghavendra Talur - 4.0.0-8 - Resolves: #1444457 - rebuild heketi to point to new rhgs-volmanager-docker image * Thu Apr 13 2017 Raghavendra Talur - 4.0.0-7 - Resolves: #1442035 - rebuild heketi pointing to rhgs-volmanager image with signed builds * Fri Apr 07 2017 Raghavendra Talur - 4.0.0-6 - Resolves: #1435613 - heketi remove device fails when the source disk being removed is down - Resolves: #1437318 - device info doesn't list all the underlying bricks after concurrent operations such as device remove and volume create are run in parallel - Resolves: #1439120 - heketi: failed to start heketi.service * Thu Mar 30 2017 Raghavendra Talur - 4.0.0-5 - Resolves: #1434838 - heketi-cli command returns error post cns deployment * Fri Mar 24 2017 Raghavendra Talur - 4.0.0-4 - Resolves: #1434838 - heketi-cli command returns error post cns deployment * Tue Mar 21 2017 Raghavendra Talur - 4.0.0-3 - Resolves: #1434242 - Upstream image reference in deploy heketi * Thu Mar 16 2017 Raghavendra Talur - 4.0.0-2 - Resolves: #1415762 - [RFE] heketi-cli should support replacement of a failed devices - Resolves: #1430678 - heketi device delete command seems to be hung forever - Resolves: #1430704 - No Space to store heketi DB due to 1MB size limit of secret. - Resolves: #1431122 - Remove device operation should be allowed only for devices in offline state * Fri Feb 24 2017 Raghavendra Talur - 4.0.0-1 - Resolves: #1415762 - Remove Device: Used to distribute all the bricks from device to other devices * Tue Feb 21 2017 Jose A. Rivera - 4.0.0-1 - Resolves: #1423372 - Rebase Heketi package to upstream v4. * Mon Jan 09 2017 Raghavendra Talur - 3.1.0-14 - Resolves: #1411397 - all prompts should have default case and work accordingly - Resolves: #1411227 - Prevent the RHGS docker image in a production setup from getting replaced with any new image with "latest" TAG pushed to the public Registry. * Mon Jan 09 2017 Raghavendra Talur - 3.1.0-13 - Resolves: #1410782 - strategy: type is seem as "Rolling" instead of "Recreate" while exporting the heketi dc - Resolves: #1411227 - Prevent the RHGS docker image in a production setup from getting replaced with any new image with "latest" TAG pushed to the public Registry. * Tue Jan 03 2017 Raghavendra Talur - 3.1.0-12 - Resolves: #1404967 - cns-deploy --abort is not deleting all related resources - Resolves: #1408685 - Invalid error messages are seen when an incorrect namespace is specified - Resolves: #1409516 - Option "--cli=oc" fails with error: "Unknown option '-cli=oc'" - Resolves: #1409520 - Option "--namespace= fails with error: "Unknown option '-namespace=storage-project'." * Fri Dec 30 2016 Raghavendra Talur - 3.1.0-11 - Resolves: #1389386 - [RFE] Allow non root GIDs ( GID >0 ) to access gluster dynamically provisioned volumes. - Resolves: #1406701 - cns-deploy tool should first print ALL it's prerequisites before it starts the deployment - Resolves: #1408410 - Openshift service and endpoints sample files are not found in openshift directory - Resolves: #1408685 - Invalid error messages are seen when an incorrect namespace is specified - Resolves: #1408697 - When using --abort option, it should skip the pre-requisites prompt by default (use --yes) - Resolves: #1409059 - When using --abort option, it's NOT giving a proper warning message before it proceeds with aborting the existing deployment * Sat Dec 24 2016 Raghavendra Talur - 3.1.0-10 - Resolves: #1406921 - Syntax error in heketi YAML templates * Fri Dec 23 2016 Raghavendra Talur - 3.1.0-9 - Resolves: #1406310 - Topology load failure should not do abort but quit with a warning * Fri Dec 23 2016 Raghavendra Talur - 3.1.0-8 - Resolves: #1404948 - Error messages are seen while trying to deploy heketi and GlusterFS - Resolves: #1404967 - cns-deploy --abort is not deleting all related resources - Resolves: #1405349 - cns-deploy should use the current namespace instead of using NAMESPACE="default" - Resolves: #1405403 - cns-deploy tool is NOT throwing proper error message when a router is NOT present or NOT reachable - Resolves: #1406649 - Reduce the default size of "heketidbstorage" volume from 32GB to 2GB - Resolves: #1406655 - reduce the min-vol size restriction to a lower value - Resolves: #1406701 - cns-deploy tool should first print ALL it's prerequisites before it starts the deployment - Resolves: #1406921 - Syntax error in heketi YAML templates - Resolves: #1406302 - cns-deploy Heketi-cli commands failure in script are not handled - Resolves: #1406310 - Topology load failure should not do abort but quit with a warning * Tue Dec 20 2016 Jose A. Rivera - 3.1.0-7 - Resolves: #1404707 - cns-deploy script should fail to execute if the topology.json file is not in the current directory or if it's actual location is not specified - Resolves: #1404710 - Multiple "No resources found" messages are getting printed on the screen on executing the cns-deploy script - Resolves: #1404943 - cns-deploy tool fails to deploy heketi - Resolves: #1404945 - cns-deploy -g fails to deploy heketi and GlusterFS - Resolves: #1404948 - Error messages are seen while trying to deploy heketi and GlusterFS - Resolves: #1404978 - cns-deploy -l doesn't save all output to the specified file - Resolves: #1404981 - cns-deploy --log fails with error "Unknown option '-log'." - Resolves: #1405377 - cns-deploy tool should NOT create "glusterfs" template without "-g" option * Wed Dec 14 2016 Raghavendra Talur - 3.1.0-6 - Resolves: #1404685 - [cns-deploy] Error while executing script- "-bash: /usr/bin/cns-deploy: Permission denied" * Mon Dec 12 2016 Michael Adam - 3.1.0-5 - Resolves: #1401594 - /sys/fs/cgroup is mounted as read write - Resolves: #1395656 - One of the node in 3 node CNS system fails to respin gluster container after reboot * Sat Dec 10 2016 Michael Adam - 3.1.0-4 - Resolves: #1351535 - Need error logging on volume create failures - Resolves: #1341961 - heketi server doesn't log errors for node/device delete - Resolves: #1398578 - Update the man page - Resolves: #1398581 - gluster-template: '/var/lib/misc/glusterfsd/' fs is not persisted after RHGS container restart - Resolves: #1402015 - [RFE] provide a cns deployment tool * Wed Nov 23 2016 Michael Adam - 3.1.0-3 - Resolves: #1397793 - Wrong "image" name mentioned in glusterfs-template.json * Tue Nov 22 2016 Michael Adam - 3.1.0-2 - Resolves: #1346621 - topology info: "ID not found" error when running concurrently with volume creation - Resolves: #1395216 - ProvisioningFailed: Failed to provision volume with StorageClass "gold": glusterfs: create volume err: failed to get hostip Id not found - Resolves: #1392377 - when multiple pv claim request are made, heketi ends up creating more volumes than requested * Mon Nov 21 2016 Jose A. Rivera - 3.1.0-1 - Rebase to version 3.1.0 - Resolves: #1397435 - [RFE] Rebase to heketi 3.1.0 - Resolves: #1351646 - 404: heketi-cli cluster/device/node/volume info * Fri Oct 28 2016 Jose A. Rivera - 3.0.0-2 - bz#1359601 * Fri Oct 21 2016 Luis Pabón - 3.0.0-1 - bz#1356437 - bz#1351646 - bz#1351455 - bz#1357686 - bz#1341141 - bz#1346858 - bz#1341961 - bz#1355689 - bz#1370130 - bz#1351893 - bz#1351535 * Fri Oct 21 2016 Luis Pabón - test - Resolves: #1356437 * Wed Jul 20 2016 Luis Pabón - 2.0.6-1 - bz#1357686 - bz#1355689 - bz#1354342 - bz#1346858 - bz#1357560 - bz#1357357 - bz#1350625 - bz#1272032 - bz#1357604 * Wed Jul 13 2016 Luis Pabón - 2.0.5-1 - bz#1353497 * Fri Jul 08 2016 Luis Pabón - 2.0.4-1 - bz#1351675 - bz#1347693 - bz#1344239 - bz#1348136 - bz#1350670 - bz#1349994 - bz#1341943 - bz#1289108 - bz#1306916 * Mon Jun 20 2016 Luis Pabón - 2.0.2-3 - bz#1306910 - bz#1309620 - bz#1322732 - bz#1337845 - bz#1341943 - bz#1342973 - bz#1347041 * Thu Dec 03 2015 lpabon - 1.0.2-1 - bz#1270773 * Tue Nov 03 2015 lpabon - 1.0.1-1 - bz#1270773 * Mon Oct 12 2015 lpabon - 1.0.0-1 - rhbz#1270773