Skip to content

Commit 91b6d14

Browse files
authored
Merge pull request #173 from rawmind0/dind
Added dind support, acceptance tests and RKE log config
2 parents a889cdc + 555c677 commit 91b6d14

19 files changed

+345
-336
lines changed

.drone.yml

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@ name: default
44

55
steps:
66
- name: build
7-
image: golang:1.12.3
7+
image: rancher/dapper:1.11.2
88
commands:
9-
- apt-get update
10-
- apt-get install -y xz-utils zip rsync jq curl ca-certificates
11-
- mkdir -p /go/src/github.com/rancher
12-
- ln -s /drone/src /go/src/github.com/rancher/terraform-provider-rke
13-
- cd /go/src/github.com/rancher/terraform-provider-rke
14-
- make build-rancher
15-
- make test
9+
- dapper ci
10+
privileged: true
11+
volumes:
12+
- name: socket
13+
path: /var/run/docker.sock
1614

1715
- name: build-all-binaries
1816
image: golang:1.12.3
@@ -60,3 +58,7 @@ steps:
6058
ref:
6159
exclude: [ refs/tags/*rc* ]
6260

61+
volumes:
62+
- name: socket
63+
host:
64+
path: /var/run/docker.sock

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
## 1.0.0-rc3 (Unreleased)
1+
## 1.0.0-rc4 (Unreleased)
2+
## 1.0.0-rc3 (February 28, 2020)
23

34
FEATURES:
45

@@ -12,6 +13,9 @@ ENHANCEMENTS:
1213
* Added `CustomizeDiff` to control changes
1314
* Saving state on any execution
1415
* Added `kube_api.audit_log.Configuration.policy` argument to `services` argument
16+
* Added `dind` support
17+
* Added acceptance tests
18+
* Added `debug` and `log_file` provider configuration
1519

1620

1721
BUG FIXES:

Dockerfile.dapper

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
FROM ubuntu:16.04
2+
# FROM arm=armhf/ubuntu:16.04
3+
4+
ARG DAPPER_HOST_ARCH
5+
ENV HOST_ARCH=${DAPPER_HOST_ARCH} ARCH=${DAPPER_HOST_ARCH}
6+
7+
RUN apt-get update && \
8+
apt-get install -y gcc make ca-certificates git wget curl vim less file kmod iptables xz-utils zip && \
9+
rm -f /bin/sh && ln -s /bin/bash /bin/sh
10+
11+
ENV GOLANG_ARCH_amd64=amd64 GOLANG_ARCH_arm=armv6l GOLANG_ARCH_arm64=arm64 GOLANG_ARCH=GOLANG_ARCH_${ARCH} \
12+
GOPATH=/go PATH=/go/bin:/usr/local/go/bin:${PATH} SHELL=/bin/bash
13+
14+
RUN wget -O - https://storage.googleapis.com/golang/go1.12.15.linux-${!GOLANG_ARCH}.tar.gz | tar -xzf - -C /usr/local
15+
16+
ENV DOCKER_URL_amd64=https://get.docker.com/builds/Linux/x86_64/docker-1.10.3 \
17+
DOCKER_URL_arm=https://github.com/rancher/docker/releases/download/v1.10.3-ros1/docker-1.10.3_arm \
18+
DOCKER_URL_arm64=https://github.com/rancher/docker/releases/download/v1.10.3-ros1/docker-1.10.3_arm64 \
19+
DOCKER_URL=DOCKER_URL_${ARCH}
20+
21+
RUN wget -O - ${!DOCKER_URL} > /usr/bin/docker && chmod +x /usr/bin/docker
22+
23+
ENV DAPPER_SOURCE /go/src/github.com/rancher/terraform-provider-rke/
24+
ENV DAPPER_RUN_ARGS --privileged -v /var/lib/docker
25+
ENV DAPPER_OUTPUT ./bin ./dist ./build/bin
26+
ENV DAPPER_DOCKER_SOCKET true
27+
ENV DAPPER_ENV TAG REPO GOOS CROSS DRONE_TAG
28+
ENV TRASH_CACHE ${DAPPER_SOURCE}/.trash-cache
29+
ENV HOME ${DAPPER_SOURCE}
30+
WORKDIR ${DAPPER_SOURCE}
31+
32+
ENTRYPOINT ["./scripts/entry"]
33+
CMD ["ci"]

GNUmakefile

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor)
2-
GO111MODULE=on
2+
GO111MODULE=off
33
WEBSITE_REPO=github.com/hashicorp/terraform-website
44
PKG_NAME=rke
55
TEST?="./${PKG_NAME}"
@@ -10,6 +10,15 @@ default: build
1010
build: fmtcheck
1111
go install
1212

13+
dapper-build: .dapper
14+
./.dapper build
15+
16+
dapper-ci: .dapper
17+
./.dapper ci
18+
19+
dapper-testacc: .dapper
20+
./.dapper gotestacc.sh
21+
1322
build-rancher: validate-rancher
1423
@sh -c "'$(CURDIR)/scripts/gobuild.sh'"
1524

@@ -26,6 +35,13 @@ test: fmtcheck
2635
testacc:
2736
@sh -c "'$(CURDIR)/scripts/gotestacc.sh'"
2837

38+
.dapper:
39+
@echo Downloading dapper
40+
@curl -sL https://releases.rancher.com/dapper/latest/dapper-`uname -s`-`uname -m` > .dapper.tmp
41+
@@chmod +x .dapper.tmp
42+
@./.dapper.tmp -v
43+
@mv .dapper.tmp .dapper
44+
2945
vet:
3046
@echo "==> Checking that code complies with go vet requirements..."
3147
@go vet $$(go list ./... | grep -v vendor/) ; if [ $$? -eq 1 ]; then \
@@ -86,6 +102,6 @@ ifeq (,$(wildcard $(GOPATH)/src/$(WEBSITE_REPO)))
86102
endif
87103
@$(MAKE) -C $(GOPATH)/src/$(WEBSITE_REPO) website-provider-test PROVIDER_PATH=$(shell pwd) PROVIDER_NAME=$(PKG_NAME)
88104

89-
.PHONY: bin build test testacc vet fmt fmtcheck errcheck vendor-status test-compile vendor website website-test
105+
.PHONY: bin build test testacc vet fmt fmtcheck errcheck vendor-status test-compile vendor website website-test build-dapper
90106

91107

rke/config.go

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,61 @@
11
package rke
22

3+
import (
4+
"bytes"
5+
"fmt"
6+
"io"
7+
"os"
8+
9+
//rkelog "github.com/rancher/rke/log"
10+
log "github.com/sirupsen/logrus"
11+
)
12+
13+
const (
14+
rkeErrorTemplate = `
15+
============= RKE outputs ==============
16+
%s
17+
%s
18+
========================================
19+
`
20+
)
21+
322
// Config type of RKE Config
4-
type Config struct{}
23+
type Config struct {
24+
Debug bool
25+
LogBuffer *bytes.Buffer
26+
LogFile string
27+
}
28+
29+
func (c *Config) initLogger() {
30+
if c.LogBuffer == nil {
31+
c.LogBuffer = &bytes.Buffer{}
32+
}
33+
34+
if c.Debug {
35+
log.SetLevel(log.DebugLevel)
36+
}
37+
38+
var writer io.Writer = c.LogBuffer
39+
//writer := io.MultiWriter(os.Stderr, c.LogBuffer)
40+
41+
log.SetOutput(writer)
42+
}
43+
44+
func (c *Config) saveRKEOutput(err error) error {
45+
if len(c.LogFile) > 0 {
46+
f, errFile := os.OpenFile(c.LogFile, os.O_TRUNC|os.O_CREATE|os.O_WRONLY, 0644)
47+
if errFile != nil {
48+
return fmt.Errorf("Opening logfile %s err:%v", c.LogFile, errFile)
49+
}
50+
defer f.Close()
51+
if _, errFile := f.Write(c.LogBuffer.Bytes()); errFile != nil {
52+
return fmt.Errorf("Writing logfile %s err:%v", c.LogFile, errFile)
53+
}
54+
}
55+
56+
if err != nil {
57+
return fmt.Errorf(rkeErrorTemplate, c.LogBuffer.String(), err)
58+
}
59+
60+
return nil
61+
}

rke/provider.go

Lines changed: 12 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,23 @@
11
package rke
22

33
import (
4-
"bytes"
5-
"fmt"
6-
"io"
7-
"os"
8-
94
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
105
"github.com/hashicorp/terraform-plugin-sdk/terraform"
11-
"github.com/sirupsen/logrus"
12-
)
13-
14-
const (
15-
rkeErrorTemplate = `
16-
%s
17-
18-
============= RKE outputs ==============
19-
20-
%s
21-
========================================
22-
`
236
)
247

25-
var rkeLogBuf = &bytes.Buffer{}
26-
278
// Provider returns a terraform.ResourceProvider.
289
func Provider() terraform.ResourceProvider {
2910
return &schema.Provider{
3011
Schema: map[string]*schema.Schema{
31-
"log": {
12+
"debug": {
3213
Type: schema.TypeBool,
3314
Optional: true,
34-
DefaultFunc: schema.EnvDefaultFunc("RKE_LOG", false),
15+
DefaultFunc: schema.EnvDefaultFunc("RKE_DEBUG", false),
16+
},
17+
"log_file": {
18+
Type: schema.TypeString,
19+
Optional: true,
20+
DefaultFunc: schema.EnvDefaultFunc("RKE_LOG_FILE", ""),
3521
},
3622
},
3723
ResourcesMap: map[string]*schema.Resource{
@@ -43,38 +29,11 @@ func Provider() terraform.ResourceProvider {
4329
}
4430

4531
func providerConfigure(d *schema.ResourceData) (interface{}, error) {
46-
initLogger(d)
47-
48-
config := Config{}
49-
return config, nil
50-
}
51-
52-
func initLogger(d *schema.ResourceData) {
53-
var writer io.Writer = rkeLogBuf
54-
if v, ok := d.GetOk("log"); ok {
55-
if v.(bool) {
56-
writer = io.MultiWriter(os.Stderr, rkeLogBuf)
57-
}
58-
}
59-
60-
logrus.SetOutput(writer)
61-
logrus.SetFormatter(&logFormatter{})
62-
}
63-
64-
type logFormatter struct{}
65-
66-
func (l *logFormatter) Format(entry *logrus.Entry) ([]byte, error) {
67-
return []byte(fmt.Sprintf("[%s] %s\n", entry.Level, entry.Message)), nil
68-
}
69-
70-
func wrapErrWithRKEOutputs(err error) error {
71-
if err == nil {
72-
return nil
32+
config := &Config{
33+
Debug: d.Get("debug").(bool),
34+
LogFile: d.Get("log_file").(string),
7335
}
7436

75-
rkeLogLines := rkeLogBuf.String()
76-
if rkeLogLines == "" {
77-
return err
78-
}
79-
return fmt.Errorf(rkeErrorTemplate, err, rkeLogLines)
37+
config.initLogger()
38+
return config, nil
8039
}

rke/provider_test.go

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package rke
22

33
import (
4-
"fmt"
5-
"os"
64
"testing"
75

86
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
@@ -29,34 +27,3 @@ func TestProvider(t *testing.T) {
2927
func TestProvider_impl(t *testing.T) {
3028
var _ terraform.ResourceProvider = Provider()
3129
}
32-
33-
func hasEnvValue(envKey string) bool {
34-
if v := os.Getenv(envKey); v == "" {
35-
return false
36-
}
37-
return true
38-
}
39-
40-
func testAccPreCheckEnvs(t *testing.T, keys ...string) {
41-
for _, env := range keys {
42-
if !hasEnvValue(env) {
43-
t.Fatal(fmt.Sprintf("%s must be set for acceptance tests", env))
44-
}
45-
}
46-
}
47-
48-
func testAccPreCheck(t *testing.T) {
49-
testAccPreCheckEnvs(t, envRKENodeAddr, envRKENodeUser, envRKENodeSSHKey)
50-
rkeLogBuf.Reset()
51-
}
52-
53-
func testAccPreCheckForMultiNodes(t *testing.T) {
54-
var envKeys []string
55-
baseKeys := []string{envRKENodeAddr, envRKENodeUser, envRKENodeSSHKey}
56-
for i := 0; i < 2; i++ {
57-
for _, key := range baseKeys {
58-
envKeys = append(envKeys, fmt.Sprintf("%s_%d", key, i))
59-
}
60-
}
61-
testAccPreCheckEnvs(t, envKeys...)
62-
}

0 commit comments

Comments
 (0)