# Explicitly not architecture specific %define onelibs /usr/lib/one Summary: Cloud computing tool to manage and build a distributed virtual data center Name: opennebula Version: 3.2.1 Release: 1 License: ASL 2.0 Group: System Environment/Daemons URL: http://opennebula.org Source0: http://dev.opennebula.org/packages/opennebula-%{version}/opennebula-%{version}.tar.gz Source1: one.service Source2: one_scheduler.service Source3: sunstone.service #Source4: ozones.service Source5: one-tmpfiles.conf Source6: one.logrotate Patch0: opennebula-3.2.1-gcc47-fixes.patch Patch1: remove-executable-bit-and-shebang.patch Patch2: opennebula-3.2.1-oneacctd-fix.patch BuildRequires: rubygems-devel, xmlrpc-c-devel BuildRequires: scons, sqlite-devel, mysql-devel, apg, gcc BuildRequires: gcc-c++, curl-devel, libxml2-devel, libxslt-devel, expat-devel BuildRequires: openssl-devel Requires: ruby(abi) = 1.9.1 Requires: ruby(rubygems) Requires: rubygem(nokogiri) Requires: rubygem(sqlite3) Requires: rubygem(sequel) Requires: rubygem(amazon-ec2) Requires: rubygem(uuidtools) Requires: rubygem(sinatra) Requires: rubygem(bigdecimal) Requires: rubygem(curb) Requires: rubygem(net-ldap) Requires: openssh-server, openssh-clients, mysql-server Requires(pre): shadow-utils Requires(preun): systemd-units Requires(postun): systemd-units Requires(post): systemd-units %description OpenNebula is a Virtual Infrastructure Manager that orchestrates storage, network and virtualization technologies to enable the dynamic placement of multi-tier services (groups of interconnected virtual machines) on distributed infrastructures, combining both data center resources and remote cloud resources, according to allocation policies. OpenNebula provides internal and Cloud administration and user interfaces for the full management of the Cloud platform. OpenNebula is free software released under the Apache License. %package doc Summary: Documentation and Examples for %{name} Group: Documentation Requires: %{name} = %{version} %description doc Contains OpenNebula documentation, manual pages and examples. %files doc %doc README.md %{_datadir}/one/examples/* %dir %{_datadir}/one %dir %{_datadir}/one/examples # FUTURE: Ruby 1.9.3 broke rubygem datamapper and dependencies, upstream replacing this in OpenNebula 3.6. #%package ozones #Summary: Manage multi-administrative cloud zones #Group: System Environment/Daemons #Requires: %{name} = %{version} #Requires: httpd #Requires: ruby(abi) = 1.9.1 #Requires: ruby(rubygems) #Requires: rubygem(json) #Requires: rubygem(rack) #Requires: rubygem(thin) #Requires: rubygem(addressable) #Requires: rubygem(activerecord) #%description ozones #The OpenNebula oZones component allows for centralized management #of multiple OpenNebula zones allowing for cross-management of #different administrative domains. #%post ozones #if [ $1 -eq 1 ]; then # # Initial installation # /bin/systemctl daemon-reload >/dev/null 2>&1 || : #fi #%preun ozones #if [ $1 -eq 0 ]; then # # Package removal, not upgrade # /bin/systemctl --no-reload disable ozones.service > /dev/null 2>&1 || : # /bin/systemctl stop ozones.service > /dev/null 2>&1 || : #fi #%files ozones #%{_sysconfdir}/one/ozones-server.conf #%dir %{onelibs}/ozones #%dir %{onelibs}/ruby/zona #%dir %{onelibs}/ruby/cli/ozones_helper #%{_unitdir}/ozones.service #%{onelibs}/ruby/cli/ozones_helper.rb #%{onelibs}/ruby/cli/ozones_helper/* #%{onelibs}/ruby/zona.rb #%{onelibs}/ruby/zona/* #%{onelibs}/ozones/config.rb #%{onelibs}/ozones/* #%{_bindir}/ozones-server #%{_bindir}/onezone #%{_bindir}/onevdc %package sunstone Summary: Browser based UI for administrating a OpenNebula cloud Group: System Environment/Daemons Requires: %{name} = %{version} Requires: ruby(abi) = 1.9.1 Requires: ruby(rubygems) Requires: rubygem(json) Requires: rubygem(sequel) Requires: rubygem(sinatra) Requires: rubygem(thin) %description sunstone %{name} is a web-based UI for managing a deployed OpenNebula cloud %files sunstone %config(noreplace) %{_sysconfdir}/one/sunstone* %{_unitdir}/sunstone.service %{_bindir}/sunstone-server %dir %{onelibs}/sunstone %{onelibs}/sunstone/* %post sunstone if [ $1 -eq 1 ]; then # Initial installation /bin/systemctl daemon-reload >/dev/null 2>&1 || : fi %preun sunstone if [ $1 -eq 0 ]; then # Package removal, not upgrade /bin/systemctl --no-reload disable sunstone.service > /dev/null 2>&1 || : /bin/systemctl stop sunstone.service > /dev/null 2>&1 || : fi %pre getent group cloud >/dev/null || groupadd -r cloud getent passwd oneadmin > /dev/null || \ useradd -r -g cloud -d %{_sharedstatedir}/one -M -c "OpenNebula Cloud Admin" oneadmin exit 0 %prep %setup -q -n opennebula-3.2.1 %patch0 %patch1 -p1 %patch2 -p1 %build scons -j2 mysql=yes %install mkdir -p %{buildroot}%{_sysconfdir}/one mkdir -p %{buildroot}%{onelibs} mkdir -p %{buildroot}%{_datadir}/one mkdir -p %{buildroot}%{_sharedstatedir}/one/.one mkdir -p %{buildroot}%{_localstatedir}/log/one mkdir -p %{buildroot}%{_unitdir} mkdir -p %{buildroot}%{_sysconfdir}/tmpfiles.d mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d DESTDIR=%{buildroot} ./install.sh install -p -m 644 %{SOURCE1} %{buildroot}%{_unitdir} install -p -m 644 %{SOURCE2} %{buildroot}%{_unitdir} install -p -m 644 %{SOURCE3} %{buildroot}%{_unitdir} #install -p -m 644 %{SOURCE4} %{buildroot}%{_unitdir} install -p -m 644 %{SOURCE5} %{buildroot}%{_sysconfdir}/tmpfiles.d/opennebula.conf install -p -m 644 %{SOURCE6} %{buildroot}%{_sysconfdir}/logrotate.d/opennebula # Fix permissions chmod 0644 %{buildroot}%{onelibs}/ruby/acct/acctd.rb %{buildroot}%{onelibs}/ruby/cli/command_parser.rb chmod 0644 %{buildroot}%{onelibs}/ruby/cloud/CloudServer.rb %{buildroot}%{onelibs}/ruby/cloud/occi/ImageOCCI.rb chmod 0644 %{buildroot}%{onelibs}/ruby/cloud/occi/ImagePoolOCCI.rb %{buildroot}%{onelibs}/ruby/cloud/occi/OCCIClient.rb chmod 0644 %{buildroot}%{onelibs}/ruby/cloud/occi/OCCIServer.rb %{buildroot}%{onelibs}/ruby/cloud/occi/VirtualMachineOCCI.rb chmod 0644 %{buildroot}%{onelibs}/ruby/cloud/occi/VirtualMachinePoolOCCI.rb %{buildroot}%{onelibs}/ruby/cloud/occi/VirtualNetworkOCCI.rb chmod 0644 %{buildroot}%{onelibs}/ruby/cloud/occi/VirtualNetworkPoolOCCI.rb %{buildroot}%{onelibs}/ruby/cloud/occi/occi-server.rb chmod 0644 %{buildroot}%{onelibs}/sh/scripts_common.sh %{buildroot}%{onelibs}/ozones/ozones-server.rb chmod 0644 %{buildroot}%{onelibs}/ruby/cloud/occi/ui/public/vendor/jGrowl/jquery.jgrowl.css chmod 0644 %{buildroot}%{onelibs}/sunstone/public/vendor/jGrowl/jquery.jgrowl.css chmod 0644 %{buildroot}%{onelibs}/sunstone/sunstone-server.rb %{buildroot}%{_sysconfdir}/one/tm_dummy/tm_dummy.conf chmod 0644 %{buildroot}%{_sysconfdir}/one/tm_lvm/tm_lvm.conf %{buildroot}%{_sysconfdir}/one/tm_ssh/tm_ssh.conf chmod 0644 %{buildroot}%{_sharedstatedir}/one/remotes/scripts_common.sh # Remove oZones not compatible with Ruby 1.3 for now rm -rf %{buildroot}%{onelibs}/ozones rm -f %{buildroot}%{onelibs}/ruby/zona.rb rm -rf %{buildroot}%{onelibs}/ruby/zona rm -f %{buildroot}%{onelibs}/ruby/cli/ozones_helper.rb rm -rf %{buildroot}%{onelibs}/ruby/cli/ozones_helper rm -f %{buildroot}%{_sysconfdir}/one/ozones-server.conf # Build artifact rm -f %{buildroot}%{_datadir}/one/install_gems %post if [ $1 -eq 1 ]; then # Initial installation /bin/systemctl daemon-reload >/dev/null 2>&1 || : fi # Setup the ssh infrastructure for the cloud if [ ! -f %{_sharedstatedir}/one/.ssh/id_rsa ]; then mkdir -p %{_sharedstatedir}/one/.ssh /usr/bin/ssh-keygen -q -t rsa -f %{_sharedstatedir}/one/.ssh/id_rsa -N '' cat %{_sharedstatedir}/one/.ssh/id_rsa.pub > %{_sharedstatedir}/one/.ssh/authorized_keys echo "Host *" >> %{_sharedstatedir}/one/.ssh/config echo " StrictHostKeyChecking no" >> %{_sharedstatedir}/one/.ssh/config chown -R oneadmin:cloud %{_sharedstatedir}/one/.ssh chmod 700 %{_sharedstatedir}/one/.ssh chmod 600 %{_sharedstatedir}/one/.ssh/id_rsa* chmod 600 %{_sharedstatedir}/one/.ssh/authorized_keys fi if [ ! -f %{_sharedstatedir}/one/.one/one_auth ]; then PASSWORD=`apg -m 12 -M cNl -n 1` echo oneadmin:$PASSWORD > %{_sharedstatedir}/one/.one/one_auth fi systemd-tmpfiles --create %{_sysconfdir}/tmpfiles.d/opennebula.conf %preun if [ $1 -eq 0 ]; then # Package removal, not upgrade /bin/systemctl --no-reload disable one.service one_scheduler.service > /dev/null 2>&1 || : /bin/systemctl stop one.service one_scheduler.service > /dev/null 2>&1 || : fi %files %doc LICENSE NOTICE %dir %{_datadir}/one %dir %{onelibs} %dir %{onelibs}/ruby %dir %{onelibs}/ruby/onedb %dir %{onelibs}/ruby/cloud %dir %{onelibs}/ruby/cli %dir %{onelibs}/ruby/cli/one_helper %dir %{onelibs}/ruby/OpenNebula %dir %{onelibs}/ruby/acct %dir %{onelibs}/mads %dir %{onelibs}/sh %dir %{onelibs}/tm_commands %dir %{_sysconfdir}/one %dir %{_sysconfdir}/one/ec2query_templates %dir %{_sysconfdir}/one/image %dir %{_sysconfdir}/one/hm %dir %{_sysconfdir}/one/tm_vmware %dir %{_sysconfdir}/one/cli %config(noreplace) %{_sysconfdir}/one/cli/*.yaml %dir %{_sysconfdir}/one/tm_ssh %config(noreplace) %{_sysconfdir}/one/tm_ssh/tm_ssh.conf %config(noreplace) %{_sysconfdir}/one/tm_ssh/tm_sshrc %config(noreplace) %{_sysconfdir}/one/defaultrc %config(noreplace) %{_sysconfdir}/one/vmwarerc %config(noreplace) %{_sysconfdir}/one/tm_dummy %config(noreplace) %{_sysconfdir}/one/acctd.conf %config(noreplace) %{_sysconfdir}/one/econe.conf %config(noreplace) %{_sysconfdir}/one/occi_templates %config(noreplace) %{_sysconfdir}/one/vmm_exec %config(noreplace) %{_sysconfdir}/one/occi-server.conf %config(noreplace) %{_sysconfdir}/one/group.default %config(noreplace) %{_sysconfdir}/one/vmm_ec2 %config(noreplace) %{_sysconfdir}/one/ec2query_templates/m1.small.erb %config(noreplace) %{_sysconfdir}/one/hm/hmrc %config(noreplace) %{_sysconfdir}/one/tm_vmware/tm_vmware.conf %config(noreplace) %{_sysconfdir}/one/im_ec2 %config(noreplace) %{_sysconfdir}/one/sched.conf %config(noreplace) %{_sysconfdir}/one/tm_lvm %config(noreplace) %{_sysconfdir}/one/auth %config(noreplace) %{_sysconfdir}/one/tm_shared %config(noreplace) %{_sysconfdir}/one/oned.conf %config(noreplace) %{_sysconfdir}/one/image/fs.conf %config %{_sysconfdir}/tmpfiles.d/opennebula.conf %config(noreplace) %{_sysconfdir}/logrotate.d/opennebula %{_bindir}/econe* %{_bindir}/oc* %{_bindir}/mm_sched %{_bindir}/one* %{_bindir}/tty_expect %exclude %{_bindir}/ozones-server %{onelibs}/mads/* %{onelibs}/sh/scripts_common.sh %{onelibs}/tm_commands/* %{onelibs}/ruby/ActionManager.rb %{onelibs}/ruby/CommandManager.rb %{onelibs}/ruby/DriverExecHelper.rb %{onelibs}/ruby/TMScript.rb %{onelibs}/ruby/Ganglia.rb %{onelibs}/ruby/Open*.rb %{onelibs}/ruby/VirtualMachineDriver.rb %{onelibs}/ruby/OpenNebula/* %{onelibs}/ruby/cli/one_helper.rb %{onelibs}/ruby/cli/cli_helper.rb %{onelibs}/ruby/cli/command_parser.rb %{onelibs}/ruby/ldap_auth.rb %{onelibs}/ruby/x509_auth.rb %{onelibs}/ruby/one_vnm.rb %{onelibs}/ruby/quota.rb %{onelibs}/ruby/scripts_common.rb %{onelibs}/ruby/server_*.rb %{onelibs}/ruby/ssh_*.rb %{onelibs}/ruby/cli/one_helper/* %{onelibs}/ruby/onedb/* %{onelibs}/ruby/acct/* %{onelibs}/ruby/cloud/* %{_sharedstatedir}/one/remotes/* %{_mandir}/man1/* %{_unitdir}/one.service %{_unitdir}/one_scheduler.service %{_datadir}/one/install_novnc.sh %defattr(-, oneadmin, cloud, 0755) %dir %{_sharedstatedir}/one/.one %dir %{_sharedstatedir}/one/remotes %dir %{_sharedstatedir}/one %dir %{_localstatedir}/log/one %changelog * Wed Apr 21 2012 Shawn Starr - 3.2.1-1 - Initial package