From a53a007a36fd0ff738fe6382bf8a9797aaebf789 Mon Sep 17 00:00:00 2001 From: Dmitry Pyzhov Date: Wed, 23 Apr 2014 17:23:09 +0400 Subject: [PATCH] Makesystem target for astute rpm package blueprint pack-all-eggs-and-gems Related-Bug: #1312130 Change-Id: I516e6806a458de8f63bf9f2718533d4ee6741c99 --- packages/rpm/astute.conf | 9 + packages/rpm/module.mk | 73 +++++--- packages/rpm/specs/ruby21-rubygem-astute.spec | 160 ++++++++++++++++++ sandbox.mk | 22 +-- 4 files changed, 220 insertions(+), 44 deletions(-) create mode 100644 packages/rpm/astute.conf create mode 100644 packages/rpm/specs/ruby21-rubygem-astute.spec diff --git a/packages/rpm/astute.conf b/packages/rpm/astute.conf new file mode 100644 index 000000000..3bd1ab62b --- /dev/null +++ b/packages/rpm/astute.conf @@ -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 diff --git a/packages/rpm/module.mk b/packages/rpm/module.mk index 7a7913157..89359fca3 100644 --- a/packages/rpm/module.mk +++ b/packages/rpm/module.mk @@ -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 \; diff --git a/packages/rpm/specs/ruby21-rubygem-astute.spec b/packages/rpm/specs/ruby21-rubygem-astute.spec new file mode 100644 index 000000000..552c59d89 --- /dev/null +++ b/packages/rpm/specs/ruby21-rubygem-astute.spec @@ -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 <= 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 diff --git a/sandbox.mk b/sandbox.mk index e6dad6700..577f0eb92 100644 --- a/sandbox.mk +++ b/sandbox.mk @@ -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"