Added in initial make -- rpm support, tested against Fedora 16, code in for Fedora 17 but needs additional testing. Adjusted initial_data.json to align with current code base, enacted was deprecated from core.user. New scripts/opencloud for database/init/reset/syncdb/runserver commands.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..be5701d
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,36 @@
+NAME = opencloud
+SPECFILE = $(NAME).spec
+VERSION = $(shell rpm -q --specfile $(SPECFILE) --qf '%{VERSION}\n' | head -n 1)
+RELEASE = $(shell rpm -q --specfile $(SPECFILE) --qf '%{RELEASE}\n' | head -n 1)
+
+PWD = $(shell pwd)
+
+dist rpm: $(NAME)-$(VERSION)-$(RELEASE).rpm
+
+$(NAME)-$(VERSION).tar.gz:
+ mkdir -p $(NAME)-$(VERSION)
+ rsync -av --exclude=.svn --exclude=.git --exclude=*.tar.gz --exclude=$(NAME)-$(VERSION)/ ./ $(NAME)-$(VERSION)
+ tar -czf $@ $(NAME)-$(VERSION)
+ rm -fr $(NAME)-$(VERSION)
+
+$(NAME)-$(VERSION)-$(RELEASE).rpm: $(NAME)-$(VERSION).tar.gz
+ mkdir -p build
+ rpmbuild -bb --define '_sourcedir $(PWD)' \
+ --define '_builddir $(PWD)/build' \
+ --define '_srcrpmdir $(PWD)' \
+ --define '_rpmdir $(PWD)' \
+ --define '_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm' \
+ $(SPECFILE)
+
+srpm: $(NAME)-$(VERSION)-$(RELEASE).src.rpm
+$(NAME)-$(VERSION)-$(RELEASE).src.rpm: $(NAME)-$(VERSION).tar.gz
+ rpmbuild -bs --define "_sourcedir $$(pwd)" \
+ --define "_srcrpmdir $$(pwd)" \
+ $(SPECFILE)
+
+clean:
+ rm -f $(NAME)-$(VERSION).tar.gz $(NAME)-$(VERSION)-$(RELEASE).src.rpm $(NAME)-$(VERSION)-$(RELEASE).noarch.rpm
+ rm -rf build
+
+.PHONY: dist
+
diff --git a/opencloud.spec b/opencloud.spec
new file mode 100644
index 0000000..dab5f11
--- /dev/null
+++ b/opencloud.spec
@@ -0,0 +1,73 @@
+Summary: OpenCloud core services
+Name: opencloud
+Version: 1.0
+Release: 1
+License: GPL+
+Group: Development/Tools
+Source0: %{_tmppath}/%{name}-%{version}.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}
+requires: postgresql
+requires: postgresql-server
+requires: python-psycopg2
+requires: graphviz
+requires: graphviz-devel
+requires: graphviz-python
+requires: libxslt-devel
+requires: python-pip
+requires: tar
+requires: gcc
+
+%description
+%{summary}
+
+%prep
+%setup -q
+
+%build
+# Empty section.
+
+%pre
+pip-python install django==1.5
+pip-python install djangorestframework
+pip-python install markdown # Markdown support for the browseable API.
+pip-python install pyyaml # YAML content-type support.
+pip-python install django-filter # Filtering support
+pip-python install lxml # XML manipulation library
+pip-python install netaddr # IP Addr library
+pip-python install pytz
+pip-python install django-timezones
+pip-python install requests
+pip-python install django-crispy-forms
+pip-python install django-geoposition
+pip-python install django-extensions
+pip-python install django-suit
+pip-python install django-evolution
+
+easy_install django_evolution
+
+%install
+rm -rf %{buildroot}
+mkdir -p %{buildroot}
+install -d %{buildroot}/opt/planetstack
+
+# in builddir
+cp -rp /opt/plstackapi/planetstack %{buildroot}/opt/.
+
+find %{buildroot}/opt/planetstack -type f -print | sed "s@^$RPM_BUILD_ROOT@@g" > %{_tmppath}/tmp-filelist
+
+%clean
+rm -rf %{buildroot}
+
+%files -f %{_tmppath}/tmp-filelist
+%defattr(-,root,root,-)
+
+%post
+/opt/planetstack/scripts/opencloud initdb
+
+%preun
+rm -rf /opt/planetstack
+
+%changelog
+* Sat Feb 22 2014 Siobhan Tully 1.0.0
+- First Build
+
diff --git a/planetstack/core/fixtures/initial_data.json b/planetstack/core/fixtures/initial_data.json
index 6650547..469bc31 100644
--- a/planetstack/core/fixtures/initial_data.json
+++ b/planetstack/core/fixtures/initial_data.json
@@ -495,8 +495,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$v5qKhIyhSQ2N$V8vh2mkqYdjQib6d2jBkpwV57eMBfhd/9eiXqaDLUWg=",
- "email": "padmin@vicci.org",
- "enacted": null
+ "email": "padmin@vicci.org"
}
},
{
@@ -520,8 +519,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=",
- "email": "tony@onlab.us",
- "enacted": null
+ "email": "tony@onlab.us"
}
},
{
@@ -545,8 +543,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=",
- "email": "mike@onlab.us",
- "enacted": null
+ "email": "mike@onlab.us"
}
},
{
@@ -570,8 +567,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=",
- "email": "andy@onlab.us",
- "enacted": null
+ "email": "andy@onlab.us"
}
},
{
@@ -595,8 +591,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=",
- "email": "sapan@onlab.us",
- "enacted": null
+ "email": "sapan@onlab.us"
}
},
{
@@ -620,8 +615,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=",
- "email": "jcnelson@cs.princeton.edu",
- "enacted": null
+ "email": "jcnelson@cs.princeton.edu"
}
},
{
@@ -645,8 +639,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=",
- "email": "llp@onlab.us",
- "enacted": null
+ "email": "llp@onlab.us"
}
},
{
@@ -670,8 +663,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=",
- "email": "scott@onlab.us",
- "enacted": null
+ "email": "scott@onlab.us"
}
},
{
@@ -695,8 +687,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=",
- "email": "ali@onlab.us",
- "enacted": null
+ "email": "ali@onlab.us"
}
},
{
@@ -720,8 +711,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=",
- "email": "bill@onlab.us",
- "enacted": null
+ "email": "bill@onlab.us"
}
},
{
@@ -745,8 +735,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=",
- "email": "guru@onlab.us",
- "enacted": null
+ "email": "guru@onlab.us"
}
},
{
@@ -770,8 +759,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=",
- "email": "marc@onlab.us",
- "enacted": null
+ "email": "marc@onlab.us"
}
},
{
@@ -795,8 +783,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$dLKRXWJlkuvm$Ycamy79oT1lN0Q5R3B3nvlr70n2X50mL86yraDwzuWk=",
- "email": "siobhan@onlab.us",
- "enacted": null
+ "email": "siobhan@onlab.us"
}
},
{
@@ -820,8 +807,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "pbkdf2_sha256$10000$jaLSTW2ksHEN$HDpjDKieFDjMvtV5wbF/ow3zfq8EqcFtNXLfuo+150s=",
- "email": "demo@onlab.us",
- "enacted": null
+ "email": "demo@onlab.us"
}
},
{
@@ -845,8 +831,7 @@
"timezone": "America/New_York",
"is_admin": true,
"password": "!",
- "email": "jhh@cs.arizona.edu",
- "enacted": null
+ "email": "jhh@cs.arizona.edu"
}
},
{
diff --git a/planetstack/scripts/opencloud b/planetstack/scripts/opencloud
new file mode 100755
index 0000000..3005865
--- /dev/null
+++ b/planetstack/scripts/opencloud
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+if [ -z "$1" ]; then
+ echo usage: $0 "[initdb | resetdb ]"
+ exit
+fi
+
+cd /opt/planetstack
+
+function initdb {
+ #Figure out if the script is running on Fedora 16 or 17
+ if grep 16 /etc/fedora-release; then
+ sudo -u postgres initdb -D /var/lib/pgsql/data/
+ sudo -u postgres pg_ctl -D /var/lib/pgsql/data -l logfile start
+ else
+ #Try normal Fedora 17 commands
+ echo "Trying Fedora 17 commands" > /dev/stdout
+ /sbin/service postgresql initdb
+ /sbin/service postgresql start
+ /sbin/chkconfig postgresql on
+ fi
+}
+function createdb {
+ echo "Creating OpenCloud database..."
+ sudo -u postgres createdb planetstack
+}
+function dropdb {
+ echo "Dropping OpenCloud database..."
+ sudo -u postgres dropdb planetstack
+}
+function syncdb {
+ echo "Syncing OpenCloud services..."
+ python /opt/planetstack/manage.py syncdb --noinput
+}
+function runserver {
+# python manage.py runserver 128.95.1.128:8000
+ echo "Starting OpenCloud Service on $HOSTNAME:8000"
+ python manage.py runserver $HOSTNAME:8000&
+}
+
+COMMAND=$1
+
+if [ "$COMMAND" = "initdb" ]; then
+ initdb
+ createdb
+ syncdb
+ runserver
+fi
+if [ "$COMMAND" = "resetdb" ]; then
+ dropdb
+ createdb
+ syncdb
+ runserver
+fi
+if [ "$COMMAND" = "syncdb" ]; then
+ syncdb
+ runserver
+fi
+if [ "$COMMAND" = "runserver" ]; then
+ runserver
+fi
+