diff --git a/build/docker/Dockerfile.baremetal-agent b/build/docker/Dockerfile.baremetal-agent new file mode 100644 index 0000000000..d97f60de3d --- /dev/null +++ b/build/docker/Dockerfile.baremetal-agent @@ -0,0 +1,14 @@ +FROM alpine:3.8 + +MAINTAINER "Zexi Li " + +ENV TZ Asia/Shanghai + +RUN mkdir -p /opt/yunion/bin + +RUN apk update && \ + apk add --no-cache ipmitool ethtool && \ + rm -rf /var/cache/apk/* + +ADD ./_output/bin/baremetal-agent /opt/yunion/bin/baremetal-agent + diff --git a/build/docker/Dockerfile.climc b/build/docker/Dockerfile.climc new file mode 100644 index 0000000000..8275f14edd --- /dev/null +++ b/build/docker/Dockerfile.climc @@ -0,0 +1,13 @@ +FROM alpine:3.8 + +MAINTAINER "Zexi Li " + +ENV TZ Asia/Shanghai + +RUN apk add bash bash-completion + +ENV PATH="/opt/yunion/bin:${PATH}" + +RUN mkdir -p /opt/yunion/bin + +ADD ./_output/bin/climc /opt/yunion/bin/climc diff --git a/build/docker/Dockerfile.glance b/build/docker/Dockerfile.glance new file mode 100644 index 0000000000..c2cbf275a3 --- /dev/null +++ b/build/docker/Dockerfile.glance @@ -0,0 +1,16 @@ +FROM centos:centos7 + +MAINTAINER "Zexi Li " + +ENV TZ Asia/Shanghai + +RUN yum install -y libaio +RUN rpm --import https://download.ceph.com/keys/release.asc +RUN yum install -y https://download.ceph.com/rpm-luminous/el7/noarch/ceph-release-1-1.el7.noarch.rpm +RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm +RUN yum install -y libcephfs-devel librbd-devel librados-devel +RUN yum install -y https://iso.yunion.cn/yumrepo-2.10/rpms/packages/yunion-qemu-2.12.1-2.12.1-1.el7.centos.x86_64.rpm https://iso.yunion.cn/yumrepo-2.10/rpms/packages/spice-0.13.3-1.el7.centos.x86_64.rpm +RUN mkdir -p /opt/yunion/bin + +ADD ./_output/bin/glance /opt/yunion/bin/glance +ADD ./_output/bin/torrent /opt/yunion/bin/torrent diff --git a/build/docker/Dockerfile.keystone b/build/docker/Dockerfile.keystone new file mode 100644 index 0000000000..96d8db0964 --- /dev/null +++ b/build/docker/Dockerfile.keystone @@ -0,0 +1,9 @@ +FROM alpine:3.8 + +MAINTAINER "Zexi Li " + +ENV TZ Asia/Shanghai + +RUN mkdir -p /opt/yunion/bin + +ADD ./_output/bin/keystone /opt/yunion/bin/keystone diff --git a/build/docker/Dockerfile.logger b/build/docker/Dockerfile.logger new file mode 100644 index 0000000000..461829e597 --- /dev/null +++ b/build/docker/Dockerfile.logger @@ -0,0 +1,10 @@ +FROM alpine:3.8 + +MAINTAINER "Zexi Li " + +ENV TZ Asia/Shanghai + +RUN mkdir -p /opt/yunion/bin + +ADD ./_output/bin/logger /opt/yunion/bin/logger + diff --git a/build/docker/Dockerfile.region b/build/docker/Dockerfile.region new file mode 100644 index 0000000000..b72bc702c8 --- /dev/null +++ b/build/docker/Dockerfile.region @@ -0,0 +1,9 @@ +FROM alpine:3.8 + +MAINTAINER "Zexi Li " + +ENV TZ Asia/Shanghai + +RUN mkdir -p /opt/yunion/bin + +ADD ./_output/bin/region /opt/yunion/bin/region diff --git a/build/docker/Dockerfile.region-dns b/build/docker/Dockerfile.region-dns new file mode 100644 index 0000000000..55e0bed1de --- /dev/null +++ b/build/docker/Dockerfile.region-dns @@ -0,0 +1,9 @@ +FROM alpine:3.8 + +MAINTAINER "Zexi Li " + +ENV TZ Asia/Shanghai + +RUN mkdir -p /opt/yunion/bin + +ADD ./_output/bin/region-dns /opt/yunion/bin/region-dns diff --git a/build/docker/Dockerfile.scheduler b/build/docker/Dockerfile.scheduler new file mode 100644 index 0000000000..43b569cd4c --- /dev/null +++ b/build/docker/Dockerfile.scheduler @@ -0,0 +1,9 @@ +FROM alpine:3.8 + +MAINTAINER "Zexi Li " + +ENV TZ Asia/Shanghai + +RUN mkdir -p /opt/yunion/bin + +ADD ./_output/bin/scheduler /opt/yunion/bin/scheduler diff --git a/build/docker/Dockerfile.webconsole b/build/docker/Dockerfile.webconsole new file mode 100644 index 0000000000..8a45c8187e --- /dev/null +++ b/build/docker/Dockerfile.webconsole @@ -0,0 +1,11 @@ +FROM alpine:3.8 + +MAINTAINER "Zexi Li " + +ENV TZ Asia/Shanghai + +RUN mkdir -p /opt/yunion/bin + +RUN apk add --no-cache sshpass ipmitool openssh-client + +ADD ./_output/bin/webconsole /opt/yunion/bin/webconsole diff --git a/build/docker/Dockerfile.yunionconf b/build/docker/Dockerfile.yunionconf new file mode 100644 index 0000000000..2e85d6c3b9 --- /dev/null +++ b/build/docker/Dockerfile.yunionconf @@ -0,0 +1,10 @@ +FROM alpine:3.8 + +MAINTAINER "Zexi Li " + +ENV TZ Asia/Shanghai + +RUN mkdir -p /opt/yunion/bin + +ADD ./_output/bin/yunionconf /opt/yunion/bin/yunionconf + diff --git a/pkg/keystone/models/users.go b/pkg/keystone/models/users.go index e6bd2fefda..2c3f5ff003 100644 --- a/pkg/keystone/models/users.go +++ b/pkg/keystone/models/users.go @@ -595,6 +595,10 @@ func (manager *SUserManager) traceLoginEvent(ctx context.Context, token mcclient usr.LastLoginSource = authCtx.Source return nil }) + // ignore operator auth source + if authCtx.Source == mcclient.AuthSourceOperator { + return + } db.OpsLog.LogEvent(usr, "auth", &s, token) logclient.AddActionLogWithContext(ctx, usr, logclient.ACT_AUTHENTICATE, &s, token, true) } diff --git a/pkg/logger/service/service.go b/pkg/logger/service/service.go index d406bc9ac0..22f3f003d8 100644 --- a/pkg/logger/service/service.go +++ b/pkg/logger/service/service.go @@ -48,18 +48,13 @@ func StartService() { log.Infof("Auth complete!!") }) - cloudcommon.InitDB(dbOpts) + app := app_common.InitApp(baseOpts, true) + initHandlers(app) + + db.EnsureAppInitSyncDB(app, dbOpts, nil) defer cloudcommon.CloseDB() models.StartNotifyToWebsocketWorker() - app := app_common.InitApp(baseOpts, true) - cloudcommon.AppDBInit(app) - initHandlers(app) - - if !db.CheckSync(opts.AutoSyncTable) { - log.Fatalf("database schema not in sync!") - } - app_common.ServeForever(app, baseOpts) } diff --git a/pkg/mcclient/input.go b/pkg/mcclient/input.go index 2d31d95e36..4a85abc805 100644 --- a/pkg/mcclient/input.go +++ b/pkg/mcclient/input.go @@ -15,10 +15,11 @@ package mcclient const ( - AuthSourceWeb = "web" - AuthSourceAPI = "api" - AuthSourceCli = "cli" - AuthSourceSrv = "srv" + AuthSourceWeb = "web" + AuthSourceAPI = "api" + AuthSourceCli = "cli" + AuthSourceSrv = "srv" + AuthSourceOperator = "operator" ) type SAuthContext struct { diff --git a/pkg/mcclient/mcclient.go b/pkg/mcclient/mcclient.go index db1572e505..6cd4784687 100644 --- a/pkg/mcclient/mcclient.go +++ b/pkg/mcclient/mcclient.go @@ -217,6 +217,10 @@ func (this *Client) AuthenticateWeb(uname, passwd, domainName, tenantName, tenan return this.authenticateWithContext(uname, passwd, domainName, tenantName, tenantDomain, aCtx) } +func (this *Client) AuthenticateOperator(uname, passwd, domainName, tenantName, tenantDomain string) (TokenCredential, error) { + return this.AuthenticateWithSource(uname, passwd, domainName, tenantName, tenantDomain, AuthSourceOperator) +} + func (this *Client) AuthenticateWithSource(uname, passwd, domainName, tenantName, tenantDomain string, source string) (TokenCredential, error) { aCtx := SAuthContext{ Source: source, diff --git a/pkg/webconsole/service/service.go b/pkg/webconsole/service/service.go index 4b8c833dd6..4893a8630e 100644 --- a/pkg/webconsole/service/service.go +++ b/pkg/webconsole/service/service.go @@ -52,7 +52,7 @@ func StartService() { log.Fatalf("invalid --api-server %s", opts.ApiServer) } - for _, binPath := range []string{opts.KubectlPath, opts.IpmitoolPath, opts.SshToolPath, opts.SshpassToolPath} { + for _, binPath := range []string{opts.IpmitoolPath, opts.SshToolPath, opts.SshpassToolPath} { ensureBinExists(binPath) } diff --git a/scripts/docker_push.sh b/scripts/docker_push.sh new file mode 100755 index 0000000000..7b56cd8793 --- /dev/null +++ b/scripts/docker_push.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +set -o errexit +set -o pipefail + +pushd $(dirname $(readlink -f "$BASH_SOURCE")) > /dev/null +CUR_DIR=$(pwd) +SRC_DIR=$(cd .. && pwd) +popd > /dev/null + +DOCKER_DIR="$SRC_DIR/build/docker" + +REGISTRY=${REGISTRY:-docker.io/yunion} +TAG=${TAG:-latest} + +build_bin() { + CGO_ENABLED=0 make cmd/$1 +} + +build_image() { + local tag=$1 + local file=$2 + local path=$3 + docker build -t "$tag" -f "$2" "$3" +} + +push_image() { + local tag=$1 + docker push "$tag" +} + +COMPONENTS=$@ + +for compent in $COMPONENTS; do + build_bin $compent + img_name="$REGISTRY/$compent:$TAG" + build_image $img_name $DOCKER_DIR/Dockerfile.$compent $SRC_DIR + push_image "$img_name" +done