Merge pull request #272 from jackgr/expandybird-build

Fix expandybird build and expansion failures
pull/277/head
Jack Greenfield 10 years ago
commit e7d561e77c

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
FROM golang:1.4-cross FROM golang:1.6
ENV GOLANG_CROSSPLATFORMS \ ENV GOLANG_CROSSPLATFORMS \
darwin/amd64 \ darwin/amd64 \

@ -275,7 +275,7 @@ func callService(path, method, action string, reader io.ReadCloser) {
panic(fmt.Errorf("cannot parse url (%s): %s\n", path, err)) panic(fmt.Errorf("cannot parse url (%s): %s\n", path, err))
} }
URL.Path += path URL.Path = strings.TrimRight(URL.Path, "/") + "/" + strings.TrimLeft(path, "/")
resp := callHTTP(URL.String(), method, action, reader) resp := callHTTP(URL.String(), method, action, reader)
var j interface{} var j interface{}
if err := json.Unmarshal([]byte(resp), &j); err != nil { if err := json.Unmarshal([]byte(resp), &j); err != nil {

@ -1,16 +1,69 @@
FROM python:2-onbuild # Copyright 2015 Google, Inc. All Rights Reserved
#
# 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 python:2
MAINTAINER Jack Greenfield <jackgr@google.com>
RUN ln -s /usr/local/bin/python /usr/bin/python RUN ln -s /usr/local/bin/python /usr/bin/python
RUN apt-get update \
&& apt-get autoremove -y \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# following lines copied from golang:1.6
RUN apt-get update && apt-get install -y --no-install-recommends \
g++ \
gcc \
libc6-dev \
make \
&& rm -rf /var/lib/apt/lists/*
ENV GOLANG_VERSION 1.6
ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
ENV GOLANG_DOWNLOAD_SHA256 5470eac05d273c74ff8bac7bef5bad0b5abbd1c4052efbdbc8db45332e836b0b
RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \
&& echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \
&& tar -C /usr/local -xzf golang.tar.gz \
&& rm golang.tar.gz
ENV GOPATH /go
ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
#end copied lines
COPY . "$GOPATH"/src/github.com/kubernetes/deployment-manager
WORKDIR "$GOPATH"/src/github.com/kubernetes/deployment-manager/expandybird
RUN go get -v -d .
RUN go install -v .
RUN mkdir -p /var/expandybird/expansion RUN mkdir -p /var/expandybird/expansion
WORKDIR /var/expandybird WORKDIR /var/expandybird
ADD expandybird ./expandybird COPY ./expandybird/expansion /var/expandybird/expansion
ADD expansion ./expansion
COPY ./expandybird/requirements.txt /var/expandybird/requirements.txt
RUN pip install --no-cache-dir -r /var/expandybird/requirements.txt
ADD requirements.txt ./requirements.txt RUN cp "$GOPATH"/bin/expandybird /var/expandybird/expandybird
RUN pip install -r ./requirements.txt RUN /bin/rm -rf "$GOPATH"
EXPOSE 8080 EXPOSE 8080
ENTRYPOINT ["./expandybird", "-expansion_binary", "./expansion/expansion.py"] ENTRYPOINT ["/var/expandybird/expandybird", "-expansion_binary", "/var/expandybird/expansion/expansion.py"]

@ -14,14 +14,15 @@
include ../include.mk include ../include.mk
.PHONY : all build test push container clean .PHONY : all build push container clean .project
DOCKER_REGISTRY := gcr.io DOCKER_REGISTRY := gcr.io
PREFIX := $(DOCKER_REGISTRY)/$(PROJECT) PREFIX := $(DOCKER_REGISTRY)/$(PROJECT)
IMAGE := expandybird IMAGE := expandybird
TAG := latest TAG := latest
DIR := . ROOT_DIR := $(abspath ./..)
DIR = $(ROOT_DIR)
push: container push: container
ifeq ($(DOCKER_REGISTRY),gcr.io) ifeq ($(DOCKER_REGISTRY),gcr.io)
@ -30,18 +31,11 @@ else
docker push $(PREFIX)/$(IMAGE):$(TAG) docker push $(PREFIX)/$(IMAGE):$(TAG)
endif endif
container: expandybird container:
cp $(shell which expandybird) . docker build -t $(PREFIX)/$(IMAGE):$(TAG) -f Dockerfile $(DIR)
docker build -t $(PREFIX)/$(IMAGE):$(TAG) $(DIR)
rm -f expandybird
expandybird:
go get -v ./...
go install -v ./...
clean: clean:
-docker rmi $(PREFIX)/$(IMAGE):$(TAG) -docker rmi $(PREFIX)/$(IMAGE):$(TAG)
rm -f expandybird
.PHONY: test .PHONY: test
test: lint vet test-unit test: lint vet test-unit

@ -6,7 +6,7 @@ you may not use this file except in compliance with the License.
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@ -17,8 +17,8 @@ limitations under the License.
package service package service
import ( import (
"github.com/kubernetes/deployment-manager/expandybird/expander"
"github.com/kubernetes/deployment-manager/common" "github.com/kubernetes/deployment-manager/common"
"github.com/kubernetes/deployment-manager/expandybird/expander"
"github.com/kubernetes/deployment-manager/util" "github.com/kubernetes/deployment-manager/util"
"errors" "errors"
@ -44,7 +44,8 @@ func NewService(handler restful.RouteFunction) *Service {
webService.Produces(restful.MIME_JSON, restful.MIME_XML) webService.Produces(restful.MIME_JSON, restful.MIME_XML)
webService.Route(webService.POST("/expand").To(handler). webService.Route(webService.POST("/expand").To(handler).
Doc("Expand a template."). Doc("Expand a template.").
Reads(&common.Template{})) Reads(&common.Template{}).
Writes(&expander.ExpansionResponse{}))
return &Service{webService} return &Service{webService}
} }
@ -85,6 +86,8 @@ func NewExpansionHandler(backend expander.Expander) restful.RouteFunction {
} }
util.LogHandlerExit("expandybird", http.StatusOK, "OK", resp.ResponseWriter) util.LogHandlerExit("expandybird", http.StatusOK, "OK", resp.ResponseWriter)
message := fmt.Sprintf("\nConfig:\n%s\nLayout:\n%s\n", response.Config, response.Layout)
util.LogHandlerText("expandybird", message)
resp.WriteEntity(response) resp.WriteEntity(response)
} }
} }

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
FROM golang:1.4 FROM golang:1.6
MAINTAINER Jack Greenfield <jackgr@google.com> MAINTAINER Jack Greenfield <jackgr@google.com>
RUN apt-get update \ RUN apt-get update \
@ -33,6 +33,7 @@ WORKDIR "$GOPATH"/src/github.com/kubernetes/deployment-manager/manager
RUN go-wrapper download RUN go-wrapper download
RUN go-wrapper install RUN go-wrapper install
WORKDIR /usr/local/bin
RUN cp "$GOPATH"/bin/manager /usr/local/bin RUN cp "$GOPATH"/bin/manager /usr/local/bin
RUN /bin/rm -rf "$GOPATH" RUN /bin/rm -rf "$GOPATH"

@ -113,7 +113,7 @@ func newManager(cp common.CredentialProvider) manager.Manager {
resolver := manager.NewTypeResolver(registryProvider, util.DefaultHTTPClient()) resolver := manager.NewTypeResolver(registryProvider, util.DefaultHTTPClient())
expander := manager.NewExpander(getServiceURL(*expanderURL, *expanderName, expanderPort), resolver) expander := manager.NewExpander(getServiceURL(*expanderURL, *expanderName, expanderPort), resolver)
deployer := manager.NewDeployer(getServiceURL(*deployerURL, *deployerName, deployerPort)) deployer := manager.NewDeployer(getServiceURL(*deployerURL, *deployerName, deployerPort))
address := strings.TrimPrefix(getServiceURL(*mongoAddress, *mongoName, *mongoPort), "https://") address := strings.TrimPrefix(getServiceURL(*mongoAddress, *mongoName, *mongoPort), "http://")
repository := createRepository(address) repository := createRepository(address)
return manager.NewManager(expander, deployer, repository, registryProvider, service, cp) return manager.NewManager(expander, deployer, repository, registryProvider, service, cp)
} }
@ -136,7 +136,7 @@ func getServiceURL(serviceURL, serviceName, servicePort string) string {
log.Fatalf("cannot resolve service:%v. environment:%v\n", serviceName, os.Environ()) log.Fatalf("cannot resolve service:%v. environment:%v\n", serviceName, os.Environ())
} }
serviceURL = fmt.Sprintf("https://%s:%s", addrs[0], servicePort) serviceURL = fmt.Sprintf("http://%s:%s", addrs[0], servicePort)
} }
} }
@ -149,7 +149,7 @@ func getServiceURL(serviceURL, serviceName, servicePort string) string {
func makeEnvVariableURL(str string) string { func makeEnvVariableURL(str string) string {
prefix := makeEnvVariableName(str) prefix := makeEnvVariableName(str)
url := os.Getenv(prefix + "_PORT") url := os.Getenv(prefix + "_PORT")
return strings.Replace(url, "tcp", "https", 1) return strings.Replace(url, "tcp", "http", 1)
} }
// makeEnvVariableName is copied from the Kubernetes source, // makeEnvVariableName is copied from the Kubernetes source,

@ -190,9 +190,18 @@ func (e *expander) expandTemplate(t *common.Template) (*ExpandedTemplate, error)
return nil, err return nil, err
} }
response, err := http.Post(e.getBaseURL(), "application/json", ioutil.NopCloser(bytes.NewReader(j))) reader := ioutil.NopCloser(bytes.NewReader(j))
request, err := http.NewRequest("POST", e.getBaseURL(), reader)
if err != nil { if err != nil {
e := fmt.Errorf("http POST failed: %s", err) return nil, err
}
request.Header.Set("Content-Type", "application/json")
request.Header.Set("Accept", "*/*")
response, err := http.DefaultClient.Do(request)
if err != nil {
e := fmt.Errorf("call failed (%s) with payload:\n%s\n", err, string(j))
return nil, e return nil, e
} }

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
FROM golang:1.4 FROM golang:1.6
RUN apt-get update \ RUN apt-get update \
&& apt-get autoremove -y \ && apt-get autoremove -y \
@ -32,6 +32,7 @@ WORKDIR "$GOPATH"/src/github.com/kubernetes/deployment-manager/resourcifier
RUN go-wrapper download RUN go-wrapper download
RUN go-wrapper install RUN go-wrapper install
WORKDIR /usr/local/bin
RUN cp "$GOPATH"/bin/resourcifier /usr/local/bin RUN cp "$GOPATH"/bin/resourcifier /usr/local/bin
RUN /bin/rm -rf "$GOPATH" RUN /bin/rm -rf "$GOPATH"

@ -64,6 +64,7 @@ func NewHandlerTester(handler http.Handler) HandlerTester {
} }
r.Header.Set("Content-Type", ctype) r.Header.Set("Content-Type", ctype)
r.Header.Set("Accept", "*/*")
w := httptest.NewRecorder() w := httptest.NewRecorder()
handler.ServeHTTP(w, r) handler.ServeHTTP(w, r)
return w, nil return w, nil
@ -87,6 +88,7 @@ func NewServerTester(handler http.Handler) ServerTester {
} }
r.Header.Set("Content-Type", ctype) r.Header.Set("Content-Type", ctype)
r.Header.Set("Accept", "*/*")
return http.DefaultClient.Do(r) return http.DefaultClient.Do(r)
} }
} }
@ -112,6 +114,10 @@ func TestHandlerWithURL(handler http.Handler, method, urlString string) (*httpte
return NewHandlerTester(handler).TestWithURL(method, urlString) return NewHandlerTester(handler).TestWithURL(method, urlString)
} }
func LogHandlerText(handler string, v string) {
log.Printf("%s: %s\n", handler, v)
}
// LogHandlerEntry logs the start of the given handler handling the given request. // LogHandlerEntry logs the start of the given handler handling the given request.
func LogHandlerEntry(handler string, r *http.Request) { func LogHandlerEntry(handler string, r *http.Request) {
log.Printf("%s: handling request:%s %s\n", handler, r.Method, r.URL.RequestURI()) log.Printf("%s: handling request:%s %s\n", handler, r.Method, r.URL.RequestURI())

Loading…
Cancel
Save