blob: 5dc0711497d84a6276204cbc105b3cc2d2d0db5d [file] [log] [blame]
#!/usr/bin/env python
#
# Copyright 2017 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
FROM centos:7
MAINTAINER Stephane Barbarie <sbarbari@ciena.com>
# install required packages
RUN ["yum", "install", "-y", "epel-release"]
RUN ["yum", "install", "-y", "git", "make", "libtool", "libxml2-devel", "file", "libxslt-devel", "libssh-devel", "libcurl-devel", "python-pip", "libxml2-python", "openssh-server", "augeas-devel", "readline", "readline-devel", "openssl", "openssl-perl", "openssl-devel", "m2crypto", "which", "unzip", "gcc-c++", "gflags-devel", "gtest-devel", "clang", "c++-devel", "wget"]
RUN ["ssh-keygen", "-A"]
RUN ["pip", "install", "pyang"]
RUN ["yum", "clean", "packages"]
RUN ["yum", "clean", "headers"]
# clone, build and install libnetconf
RUN set -e -x; \
git clone https://github.com/CESNET/libnetconf.git /usr/src/libnetconf; \
cd /usr/src/libnetconf; \
./configure --enable-tls --prefix='/usr'; \
make; \
make install; \
ln -s /usr/lib/pkgconfig/libnetconf.pc /usr/lib64/pkgconfig/; \
make clean;
# clone netopeer
RUN set -e -x; \
git clone https://github.com/CESNET/netopeer.git /usr/src/netopeer;
# build and install netopeer-cli
RUN set -e -x; \
cd /usr/src/netopeer/cli; \
./configure --enable-tls --prefix='/usr'; \
make; \
make install; \
make clean;
# build and install netopeer-server
RUN set -e -x; \
cd /usr/src/netopeer/server; \
./configure --enable-tls --prefix='/usr'; \
make; \
make install; \
cp -v config/datastore.xml /usr/etc/netopeer/cfgnetopeer/datastore.xml; \
make clean;
# clone, build and install protobuf
RUN set -e -x; \
git clone -b v3.2.1 https://github.com/google/protobuf.git /usr/src/protobuf; \
cd /usr/src/protobuf; \
./autogen.sh; \
./configure; \
make; \
make install; \
ldconfig; \
make clean;
# Install golang
RUN set -e -x; \
cd /tmp; \
wget https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz; \
tar -C /usr/local -xzf /tmp/go1.8.1.linux-amd64.tar.gz; \
rm -f /tmp/go1.8.1.linux-amd64.tar.gz
# Setup necessary environment variables
ENV GOROOT /usr/local/go
ENV PATH $PATH:$GOROOT/bin
RUN ["mkdir", "/usr/local/share/go"]
ENV GOPATH /usr/local/share/go
ENV PATH $PATH:$GOPATH/bin
# Install golang protobuf/grpc libraries
RUN set -e -x; \
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}; \
go get -u google.golang.org/grpc; \
go get -u github.com/hashicorp/consul/api;
# Build and Install the golang Voltha GRPC client layer
COPY netopeer/voltha-grpc-client /usr/src/voltha-grpc-client
RUN set -e -x; \
mkdir -p /usr/local/share/go/src/github.com/opencord/voltha/netconf; \
ln -s /usr/src/voltha-grpc-client /usr/local/share/go/src/github.com/opencord/voltha/netconf/translator; \
cd /usr/src/voltha-grpc-client; \
go build -buildmode=c-shared -o voltha.so voltha.go; \
mv voltha.so /usr/lib64; \
mv voltha.h /usr/include; \
cp voltha-defs.h /usr/include; \
rm -f /usr/lib64/libvoltha.so; \
ln -s /usr/lib64/voltha.so /usr/lib64/libvoltha.so;
# ------------------------------------------------
# Sample transapi implementation
#
# To demonstrate the integration with the netopeer netconf server
#
# Build and Install the golang Voltha model conversion package
COPY netopeer/voltha-netconf-model /usr/src/voltha-netconf-model
RUN set -e -x; \
cd /usr/src/voltha-netconf-model; \
go build -buildmode=c-shared -o voltha-netconf-model.so netconf-model.go; \
mv voltha-netconf-model.so /usr/lib64; \
mv voltha-netconf-model.h /usr/include; \
rm -f /usr/lib64/libvoltha-netconf-model.so; \
ln -s /usr/lib64/voltha-netconf-model.so /usr/lib64/libvoltha-netconf-model.so;
# Build and install the Voltha netconf transapi library
COPY netopeer/voltha-transapi /usr/src/netopeer/voltha-transapi
RUN set -e -x; \
cd /usr/src/netopeer/voltha-transapi; \
autoreconf --install; \
./configure --prefix='/usr'; \
make; \
make install;
# Finally start the netopeer-server with debugging logs enabled
CMD ["/usr/bin/netopeer-server", "-v", "3"]
# Expose the default netconf port
EXPOSE 830