Makesystem target for astute rpm package

blueprint pack-all-eggs-and-gems
Related-Bug: #1312130
Change-Id: I516e6806a458de8f63bf9f2718533d4ee6741c99
This commit is contained in:
Dmitry Pyzhov 2014-04-23 17:23:09 +04:00
parent 387d2e931e
commit a53a007a36
4 changed files with 220 additions and 44 deletions

9
packages/rpm/astute.conf Normal file
View File

@ -0,0 +1,9 @@
broker_host: 'localhost' #AMQP server
broker_port: 5672
broker_username: 'naily'
broker_password: 'naily'
broker_queue: 'naily'
broker_publisher_queue: 'nailgun'
broker_exchange: 'nailgun'
#reboot_timeout: 120 # Wait for reboot request
#provisioning_timeout: 5400 # Timeout for target nodes to install OS

View File

@ -10,23 +10,42 @@ clean-rpm:
RPM_SOURCES:=$(BUILD_DIR)/packages/rpm/SOURCES
# Usage:
# (eval (call prepare_source,package_name,file_name,source_path))
define prepare_source
# (eval (call prepare_file_source,package_name,file_name,source_path))
define prepare_file_source
$(BUILD_DIR)/packages/rpm/$1.done: $(BUILD_DIR)/packages/rpm/sources/$1/$2
$(BUILD_DIR)/packages/rpm/sources/$1/$2: $(call find-files,$3)
mkdir -p $(BUILD_DIR)/packages/rpm/sources/$1
cp $3 $(BUILD_DIR)/packages/rpm/sources/$1/$2
endef
# Usage:
# (eval (call prepare_python_source,package_name,file_name,source_path))
define prepare_python_source
$(BUILD_DIR)/packages/rpm/$1.done: $(BUILD_DIR)/packages/rpm/sources/$1/$2
$(BUILD_DIR)/packages/rpm/sources/$1/$2: $(call find-files,$3)
mkdir -p $(BUILD_DIR)/packages/rpm/sources/$1
ifeq ($1,nailgun-mcagents)
cd $3 && tar zcf $(BUILD_DIR)/packages/rpm/sources/$1/$2 *
else
ifeq ($(findstring .tar.gz,$2),.tar.gz)
ifeq ($1,nailgun)
cd $3 && npm install && grunt build
endif # /nailgun
endif
cd $3 && python setup.py sdist -d $(BUILD_DIR)/packages/rpm/sources/$1
else # not tar.gz
cp $3 $(BUILD_DIR)/packages/rpm/sources/$1/$2
endif # /tar.gz
endif # /mcagents
endef
# Usage:
# (eval (call prepare_tgz_source,package_name,file_name,source_path))
define prepare_tgz_source
$(BUILD_DIR)/packages/rpm/$1.done: $(BUILD_DIR)/packages/rpm/sources/$1/$2
$(BUILD_DIR)/packages/rpm/sources/$1/$2: $(call find-files,$3)
mkdir -p $(BUILD_DIR)/packages/rpm/sources/$1
cd $3 && tar zcf $(BUILD_DIR)/packages/rpm/sources/$1/$2 *
endef
# Usage:
# (eval (call prepare_ruby21_source,package_name,file_name,source_path))
define prepare_ruby21_source
$(BUILD_DIR)/packages/rpm/$1.done: $(BUILD_DIR)/packages/rpm/sources/$1/$2
$(BUILD_DIR)/packages/rpm/sources/$1/$2: $(call find-files,$3)
mkdir -p $(BUILD_DIR)/packages/rpm/sources/$1
cd $3 && gem build *.gemspec && cp $2 $(BUILD_DIR)/packages/rpm/sources/$1/$2
endef
# Usage:
@ -35,6 +54,10 @@ define build_rpm
$(BUILD_DIR)/packages/rpm/repo.done: $(BUILD_DIR)/packages/rpm/$1.done
$(BUILD_DIR)/packages/rpm/repo.done: $(BUILD_DIR)/packages/rpm/$1-repocleanup.done
# You can use package name as a target, for example: make ruby21-rubygem-astute
# It will build astute rpm package
$1: $(BUILD_DIR)/packages/rpm/$1.done
$(BUILD_DIR)/packages/rpm/$1.done: $(BUILD_DIR)/mirror/build.done
$(BUILD_DIR)/packages/rpm/$1.done: SANDBOX:=$(BUILD_DIR)/packages/rpm/SANDBOX
@ -45,6 +68,7 @@ $(BUILD_DIR)/packages/rpm/$1.done: \
$(BUILD_DIR)/repos/repos.done
mkdir -p $(BUILD_DIR)/packages/rpm/RPMS/x86_64
sudo sh -c "$$$${SANDBOX_UP}"
sudo yum -c $$(SANDBOX)/etc/yum.conf --installroot=$$(SANDBOX) -y --nogpgcheck install ruby rpm-build tar python-setuptools
sudo mkdir -p $$(SANDBOX)/tmp/SOURCES
sudo cp -r $(BUILD_DIR)/packages/rpm/sources/$1/* $$(SANDBOX)/tmp/SOURCES
sudo cp $(SOURCE_DIR)/packages/rpm/specs/$1.spec $$(SANDBOX)/tmp
@ -58,18 +82,20 @@ $(BUILD_DIR)/packages/rpm/$1-repocleanup.done: $(BUILD_DIR)/mirror/build.done
$$(ACTION.TOUCH)
endef
$(eval $(call prepare_source,fencing-agent,fencing-agent.rb,$(BUILD_DIR)/repos/nailgun/bin/fencing-agent.rb))
$(eval $(call prepare_source,fencing-agent,fencing-agent.cron,$(BUILD_DIR)/repos/nailgun/bin/fencing-agent.cron))
$(eval $(call prepare_source,fuel-ostf,fuel-ostf-0.1.tar.gz,$(BUILD_DIR)/repos/ostf))
$(eval $(call prepare_source,fuelmenu,fuelmenu-0.1.tar.gz,$(BUILD_DIR)/repos/nailgun/fuelmenu))
$(eval $(call prepare_source,nailgun-agent,agent,$(BUILD_DIR)/repos/nailgun/bin/agent))
$(eval $(call prepare_source,nailgun-agent,nailgun-agent.cron,$(BUILD_DIR)/repos/nailgun/bin/nailgun-agent.cron))
$(eval $(call prepare_source,nailgun-mcagents,mcagents.tar.gz,$(BUILD_DIR)/repos/astute/mcagents))
$(eval $(call prepare_source,nailgun-net-check,nailgun-net-check-0.2.tar.gz,$(BUILD_DIR)/repos/nailgun/network_checker))
$(eval $(call prepare_source,nailgun,nailgun-0.1.0.tar.gz,$(BUILD_DIR)/repos/nailgun/nailgun))
$(eval $(call prepare_source,python-fuelclient,fuelclient-0.2.tar.gz,$(BUILD_DIR)/repos/nailgun/fuelclient))
$(eval $(call prepare_source,shotgun,Shotgun-0.1.0.tar.gz,$(BUILD_DIR)/repos/nailgun/shotgun))
$(eval $(call prepare_source,nailgun-redhat-license,get_redhat_licenses,$(SOURCE_DIR)/packages/rpm/nailgun-redhat-license/get_redhat_licenses))
$(eval $(call prepare_file_source,fencing-agent,fencing-agent.rb,$(BUILD_DIR)/repos/nailgun/bin/fencing-agent.rb))
$(eval $(call prepare_file_source,fencing-agent,fencing-agent.cron,$(BUILD_DIR)/repos/nailgun/bin/fencing-agent.cron))
$(eval $(call prepare_python_source,fuel-ostf,fuel-ostf-0.1.tar.gz,$(BUILD_DIR)/repos/ostf))
$(eval $(call prepare_python_source,fuelmenu,fuelmenu-0.1.tar.gz,$(BUILD_DIR)/repos/nailgun/fuelmenu))
$(eval $(call prepare_file_source,nailgun-agent,agent,$(BUILD_DIR)/repos/nailgun/bin/agent))
$(eval $(call prepare_file_source,nailgun-agent,nailgun-agent.cron,$(BUILD_DIR)/repos/nailgun/bin/nailgun-agent.cron))
$(eval $(call prepare_tgz_source,nailgun-mcagents,mcagents.tar.gz,$(BUILD_DIR)/repos/astute/mcagents))
$(eval $(call prepare_python_source,nailgun-net-check,nailgun-net-check-0.2.tar.gz,$(BUILD_DIR)/repos/nailgun/network_checker))
$(eval $(call prepare_python_source,nailgun,nailgun-0.1.0.tar.gz,$(BUILD_DIR)/repos/nailgun/nailgun))
$(eval $(call prepare_python_source,python-fuelclient,fuelclient-0.2.tar.gz,$(BUILD_DIR)/repos/nailgun/fuelclient))
$(eval $(call prepare_python_source,shotgun,Shotgun-0.1.0.tar.gz,$(BUILD_DIR)/repos/nailgun/shotgun))
$(eval $(call prepare_file_source,nailgun-redhat-license,get_redhat_licenses,$(SOURCE_DIR)/packages/rpm/nailgun-redhat-license/get_redhat_licenses))
$(eval $(call prepare_file_source,ruby21-rubygem-astute,astute.conf,$(SOURCE_DIR)/packages/rpm/astute.conf))
$(eval $(call prepare_ruby21_source,ruby21-rubygem-astute,astute-0.0.2.gem,$(BUILD_DIR)/repos/astute))
$(eval $(call build_rpm,fencing-agent))
$(eval $(call build_rpm,fuelmenu))
@ -81,6 +107,7 @@ $(eval $(call build_rpm,fuel-ostf))
$(eval $(call build_rpm,nailgun-agent))
$(eval $(call build_rpm,nailgun-redhat-license))
$(eval $(call build_rpm,python-fuelclient))
$(eval $(call build_rpm,ruby21-rubygem-astute))
$(BUILD_DIR)/packages/rpm/repo.done:
find $(BUILD_DIR)/packages/rpm/RPMS -name '*.rpm' -exec cp -u {} $(LOCAL_MIRROR_CENTOS_OS_BASEURL)/Packages \;

View File

@ -0,0 +1,160 @@
# Generated from astute-0.0.1.gem by gem2rpm -*- rpm-spec -*-
%define rbname astute
%define version 0.0.2
%define release 8
%global gemdir %(ruby -rubygems -e 'puts Gem::dir' 2>/dev/null)
%global geminstdir %{gemdir}/gems/%{gemname}-%{version}
%define gembuilddir %{buildroot}%{gemdir}
Summary: Orchestrator for OpenStack deployment
Name: ruby21-rubygem-%{rbname}
Version: %{version}
Release: %{release}
Group: Development/Ruby
License: Distributable
URL: http://fuel.mirantis.com
Source0: %{rbname}-%{version}.gem
# Make sure the spec template is included in the SRPM
Source1: astute.conf
BuildRoot: %{_tmppath}/%{name}-%{version}-root
Requires: ruby >= 2.1
Requires: ruby21-rubygem-activesupport = 3.0.10
Requires: ruby21-rubygem-mcollective-client = 2.4.1
Requires: ruby21-rubygem-symboltable = 1.0.2
Requires: ruby21-rubygem-rest-client = 1.6.7
Requires: ruby21-rubygem-popen4 = 0.1.2
Requires: ruby21-rubygem-amqp = 0.9.10
Requires: ruby21-rubygem-raemon = 0.3.0
Requires: ruby21-rubygem-net-ssh = 2.8.0
Requires: ruby21-rubygem-net-ssh-gateway = 1.2.0
Requires: ruby21-rubygem-net-ssh-multi = 1.2.0
Requires: openssh-clients
BuildRequires: ruby >= 2.1
BuildArch: noarch
Provides: ruby21(Astute) = %{version}
%description
Deployment Orchestrator of Puppet via MCollective. Works as a library or from
CLI.
%prep
%setup -T -c
%build
%install
%{__rm} -rf %{buildroot}
mkdir -p %{gembuilddir}
gem install --local --install-dir %{gembuilddir} --force %{SOURCE0}
mkdir -p %{buildroot}%{_bindir}
mv %{gembuilddir}/bin/* %{buildroot}%{_bindir}
rmdir %{gembuilddir}/bin
install -d -m 750 %{buildroot}%{_sysconfdir}/astute
install -p -D -m 640 %{SOURCE1} %{buildroot}%{_sysconfdir}/astute/astute.conf
cat > %{buildroot}%{_bindir}/astuted <<EOF
#!/bin/bash
ruby -r 'rubygems' -e "gem 'astute', '>= 0'; load Gem.bin_path('astute', 'astuted', '>= 0')" -- \$@
EOF
install -d -m 755 %{buildroot}%{_localstatedir}/log/astute
%clean
%{__rm} -rf %{buildroot}
%files
%defattr(-, root, root)
# %{_bindir}/astute
# %{gemdir}/gems/astute-0.0.2/bin/astute
%{gemdir}/gems/astute-0.0.2/bin/astuted
%{gemdir}/gems/astute-0.0.2/lib/astute.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/config.rb
# %{gemdir}/gems/astute-0.0.2/lib/astute/rpuppet.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/deployment_engine.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/deployment_engine/nailyfact.rb
# %{gemdir}/gems/astute-0.0.2/lib/astute/deployment_engine/simple_puppet.rb
# %{gemdir}/gems/astute-0.0.2/lib/astute/metadata.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/cobbler_manager.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/dump.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/exceptions.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/ext/deep_copy.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/ext/exception.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/ext/hash.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/post_deploy_actions.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/post_deploy_actions/restart_radosgw.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/post_deploy_actions/update_cluster_hosts_info.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/post_deploy_actions/upload_cirros_image.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/redhat_checker.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/logparser.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/reporter.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/version.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/node.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/puppetd.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/context.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/orchestrator.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/logparser/deployment.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/logparser/provision.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/logparser/parser_patterns.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/cobbler.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/mclient.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/network.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/nodes_remover.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/ssh.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/ssh_actions/ssh_erase_nodes.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/ssh_actions/ssh_hard_reboot.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/ruby_removed_functions.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/server/dispatcher.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/server/producer.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/server/reporter.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/server/server.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/server/task_queue.rb
%{gemdir}/gems/astute-0.0.2/lib/astute/server/worker.rb
%{gemdir}/gems/astute-0.0.2/spec/example-logs/main-menu.log_
%{gemdir}/gems/astute-0.0.2/examples/example_astute_config.yaml
%{gemdir}/gems/astute-0.0.2/spec/integration/mcollective_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/spec_helper.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/deployment_engine_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/dump_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/fixtures/common_attrs.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/fixtures/common_nodes.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/fixtures/ha_deploy.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/fixtures/ha_nodes.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/fixtures/multi_deploy.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/network_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/nodes_remover_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/post_deploy_actions_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/redhat_checker_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/restart_radosgw_hook_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/update_cluster_hosts_info_hook_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/upload_cirros_image_hook_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/nailyfact_deploy_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/orchestrator_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/node_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/puppetd_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/logparser_spec.rb
# %{gemdir}/gems/astute-0.0.2/spec/unit/simplepuppet_deploy_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/reporter_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/mclient_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/unit/cobbler_spec.rb
%{gemdir}/gems/astute-0.0.2/spec/example-logs/puppet-agent.log.ha.contr.2
%{gemdir}/gems/astute-0.0.2/spec/example-logs/puppet-agent.log.ha.contr.3
%{gemdir}/gems/astute-0.0.2/spec/example-logs/puppet-agent.log.ha.contr.1
%{gemdir}/gems/astute-0.0.2/spec/example-logs/puppet-agent.log.ha.compute
%{gemdir}/gems/astute-0.0.2/spec/example-logs/puppet-agent.log.multi.compute
%{gemdir}/gems/astute-0.0.2/spec/example-logs/anaconda.log_
%{gemdir}/gems/astute-0.0.2/spec/example-logs/puppet-agent.log.multi.contr
%{gemdir}/gems/astute-0.0.2/spec/example-logs/puppet-agent.log.singlenode
%dir %attr(0750, naily, naily) %{_sysconfdir}/astute
%config(noreplace) %attr(0640, root, naily) %{_sysconfdir}/astute/astute.conf
%dir %attr(0755, naily, naily) %{_localstatedir}/log/astute
%config(noreplace) %{_bindir}/astuted
%doc %{gemdir}/doc/astute-0.0.2
%{gemdir}/cache/astute-0.0.2.gem
%{gemdir}/specifications/astute-0.0.2.gemspec
%changelog

View File

@ -22,27 +22,7 @@ pluginconfpath=$(SANDBOX)/etc/yum/pluginconf.d
reposdir=$(SANDBOX)/etc/yum.repos.d
endef
SANDBOX_PACKAGES:=\
byacc \
flex \
gcc \
glibc-devel \
glibc-headers \
kernel-lt-headers \
make \
openssl-devel \
postgresql-devel \
python-devel.x86_64 \
python-pip \
rpm-build \
ruby \
ruby-devel \
rubygem-rake \
rubygems \
tar \
which \
zlib-devel
SANDBOX_PACKAGES:=bash
define SANDBOX_UP
echo "Starting SANDBOX up"