# Dockerfile.base
# This image isn't used, but installs the prereqs for the other XOS images

FROM       ubuntu:14.04.4

# XXX Workaround for docker bug:
# https://github.com/docker/docker/issues/6345
# Kernel 3.15 breaks docker, uss the line below as a workaround
# until there is a fix
RUN ln -s -f /bin/true /usr/bin/chfn
# XXX End workaround

# Install apt packages
RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y \
    apt-transport-https \
    curl \
    gcc \
    geoip-database \
    git \
    graphviz \
    graphviz-dev \
    libgeoip1 \
    libxslt1-dev \
    libxslt1.1 \
    libyaml-dev \
    m4 \
    openssh-client \
    pkg-config \
    python-ceilometerclient \
    python-crypto \
    python-dev \
    python-glanceclient \
    python-httplib2 \
    python-jinja2 \
    python-keystoneclient \
    python-netaddr \
    python-neutronclient \
    python-novaclient \
    python-paramiko \
    python-pip \
    python-psycopg2 \
    python-pycurl \
    python-setuptools \
    python-yaml \
    rsync \
    software-properties-common \
    supervisor \
    tar \
    wget \
 && rm -rf /var/lib/apt/lists/*

# Install python pacakges with pip
RUN pip install \
    ca-certs-locater \
    "django>=1.8,<1.8.99" \
    django-bitfield \
    django-crispy-forms \
    django-encrypted-fields \
    django-extensions \
    django-filter \
    django-geoposition \
    django-ipware \
    django-suit==0.3a3 \
    django-timezones \
    django_rest_swagger \
    djangorestframework==3.3.3 \
    dnslib \
    google-api-python-client \
    httplib2 \
    jinja2 \
    lxml \
    markdown \
    netaddr \
    psycopg2 \
    pyOpenSSL \
    pygraphviz \
    python-ceilometerclient \
    python-dateutil \
    python-gflags \
    python-keyczar \
    python-logstash \
    pytz \
    pyyaml \
    requests

# Required for ansible 2.x OpenStack os_* modules
RUN pip install --upgrade pbr && \
    pip install --upgrade six && \
    pip install shade

# Install ansible 2.x (has to be done after installing `software-properties-common`)
RUN add-apt-repository ppa:ansible/ansible
RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y \
    ansible \
 && rm -rf /var/lib/apt/lists/*

COPY ansible-hosts /etc/ansible/hosts

# jQuery download w/checksum
ENV JQUERY_DL_URL http://code.jquery.com/jquery-1.12.4.min.js
ENV JQUERY_SHA256 668b046d12db350ccba6728890476b3efee53b2f42dbb84743e5e9f1ae0cc404

RUN curl -fLsS $JQUERY_DL_URL -o jquery.min.js && \
  echo "$JQUERY_SHA256  jquery.min.js" | sha256sum -c - && \
  mv jquery.min.js /usr/local/lib/python2.7/dist-packages/suit/static/suit/js/jquery.min.js

# Install heat-translator for TOSCA support
ENV HT_REPO_URL https://github.com/openstack/heat-translator.git
ENV HT_REF a951b93c16e54046ed2d233d814860181c772e30

RUN git clone $HT_REPO_URL /tmp/heat-translator && \
    cd /tmp/heat-translator && \
    git checkout $HT_REF && \
    mkdir -p /opt/tosca && \
    mv /tmp/heat-translator/translator /opt/tosca/translator && \
    echo > /opt/tosca/translator/__init__.py && \
    rm -rf /tmp/heat-translator

# For Synchronizer
ENV PHANTOMJS_DL_URL https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
ENV PHANTOMJS_SHA256 86dd9a4bf4aee45f1a84c9f61cf1947c1d6dce9b9e8d2a907105da7852460d2f

RUN curl -fLsS $PHANTOMJS_DL_URL -o phantomjs.tar.bz2 && \
  echo "$PHANTOMJS_SHA256  phantomjs.tar.bz2" | sha256sum -c - && \
  tar -C /usr/local/share -xjf phantomjs.tar.bz2 && \
  ln -s /usr/local/share/phantomjs-* /usr/local/share/phantomjs && \
  ln -s /usr/local/share/phantomjs/bin/phantomjs /bin/phantomjs && \
  rm phantomjs.tar.bz2

