Giter Site home page Giter Site logo

cloud-barista / cb-spider Goto Github PK

View Code? Open in Web Editor NEW
30.0 8.0 44.0 86.83 MB

CB-Spider offers a unified view and interface for multi-cloud management.

Home Page: https://github.com/cloud-barista/cb-spider/wiki

License: Apache License 2.0

Go 90.44% Shell 9.08% Dockerfile 0.03% Makefile 0.02% HTML 0.43%
multi-cloud cloud-agnostic unified-view alibaba aws azure cloudit gcp ibm openstack

cb-spider's Introduction

Cloud-Barista

Release Version Pre Release Version License Slack

The Cloud-Barista is a Multi-Cloud Service Platform SW.

Cloud-Barista consists of multiple frameworks (sub-systems) to accommodate microservice-like architecture.

Please take a look Cloud-Barista Website for a detail decription.

Note for developing and using Cloud-Barista

Development stage of Cloud-Barista

Cloud-Barista is currently under development. (not v1.0 yet)
We welcome any new suggestions, issues, opinions, and controbutors !
Please note that the functionalities of Cloud-Barista are not stable and secure yet.
Becareful if you plan to use the current release in production.
If you have any difficulties in using Cloud-Barista, please let us know.
(Open an issue or Join the Cloud-Barista Slack)

This repository is an integrated archive for repository of major frameworks. These repositories are included and listed in the root directory. This repo reflects the latest release only.

Main frameworks or tools are as follow,

[Note] CB-Larva is a special repository that incubates (research and develop) new Multi-Cloud technologies. CB-Larva explores interesting ideas and shows the possibility of those (i.e., Proof of Concept (POC)). That's why we encourage you to take a look and contribute to the special repository. Please note that the source code of CB-Larva would not be released and archived in this repository for the time being.


[목 차]

  1. 실행 환경
  2. 설치 및 실행
  3. 사용 방법 및 예시
  4. API 및 문서
  5. 특이 사항

[실행 환경]

  • Linux (추천: Ubuntu v22.04)

[설치 및 실행]


[사용 방법 및 예시]

주요 서비스: 멀티 클라우드 인프라 서비스 (MCIS)


[API 및 문서]


[특이 사항]

  • 개발 단계: 기능 개발 우선 단계 (상용 활용시 안정화 및 보완 필요)
  • CSP 연동 검증 상태
    • CB-Spider 기준 테스트 완료된 CSP: 링크 1링크 2 참고
    • CB-Tumblebug 기준 테스트 완료된 CSP: 링크 참고
    • 현재는 개발 단계이므로 기능 안정성은 낮을 수 있음 (버그 리포트 기여 환영합니다!)

cb-spider's People

Contributors

atg0831 avatar choryang avatar cliffsynn avatar computerphilosopher avatar deepdiveinwinter avatar dependabot[bot] avatar dev-secloudit avatar dev4unet avatar devpjh121 avatar dogfootman avatar hippo-an avatar inno-cloudbarista avatar innodreamer avatar ish-hcc avatar iworkist avatar jazmandorf avatar jihoon-seo avatar jmleefree avatar movey1 avatar mzc-csc avatar pjini avatar powerkimhub avatar prow-for-cloud-barista[bot] avatar raccoon-mh avatar seokho-son avatar sungwoongz avatar sykim-etri avatar thdclals18 avatar tjeom-inno avatar yunkon-kim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cb-spider's Issues

Suggestion: Add `/spider/` prefix for REST APIs

As-Is:

  • /publicip
  • /vnetwork
  • /vm
  • ...

To-Be:

  • /spider/publicip
  • /spider/vnetwork
  • /spider/vm
  • ...

[사유]

  • API-GW 에서 지금은 각 API (/publicip, /vnetwork, /vm, ...) 별로 rule 을 적고 있습니다.
  • 향후 http://api-gw:8000/spider/* 로 오는 모든 요청을 http://cb-spider:1024/* 로 보내고 싶습니다.
  • 예를 들어 API-GW 테스트 시 Spider 에 API 요청할 때 1) Spider 로 직접 보내기, 2) API-GW 로 보내기 를 계속 왔다갔다 해야 하는데, 이 때 Spider API 도 /spider/ (또는 /cb-spider/) 로 시작하도록 통일되어 있으면, 테스트도 편리하고, 향후에도 편리할 것으로 예상됩니다.

  • 영향: Spider API 를 이용하는 Tumblebug, Dragonfly, Webtool 등도 Spider API 변경에 대한 대응이 필요합니다.
  • 기타: Tumblebug, Dragonfly, Webtool 등도 모두 이런 스타일로 갔으면 좋겠습니다.

securityGroup 상세 firewall 룰 처리 이슈

Spider를 통해 securityGroup 생성시 상세 firewall 룰 입력 방식 공유가 필요.

[예시]

curl -sX POST http://localhost:1323/tumblebug/ns/$NS_ID/resources/securityGroup -H 'Content-Type: application/json' -d \
	'{
		"name": "SG-'$CSP'-'$POSTFIX'",
		"connectionName": "'${CONN_CONFIG[INDEX]}'",
		"vNetId": "VPC-'$CSP'-'$POSTFIX'",
		"description": "jhseo test description",
		    "firewallRules": [
			    {
				    "FromPort": "1",
				    "ToPort": "65535",
				    "IPProtocol": "tcp",
				    "Direction": "inbound"
			    }
		    ]
	    }' | json_pp #|| return 1

"FromPort": "1",
"ToPort": "65535",
"IPProtocol": "tcp",
"Direction": "inbound"

각 Key의 Value로 입력할 수 있는 정보 공유가 필요하며,
특히 IPProtocol 중 icmp (ping 등을 처리하기 위한) 를 추가하기 위한 예시가 필요합니다.

또한 CSP 간에 일관성 있는 키워드를 사용하도록 확인 및 처리가 필요합니다.

Bug: AWS VPC 만들 때 IID.NameId 가 제대로 전달되지 않았는데도 AWS 에 VPC 가 생성됨

FYI - 올바른 요청

{
    "ConnectionName": "'${CONN_CONFIG}'",
    "ReqInfo": {
        "Name": "VPC-01",
        "IPv4_CIDR": "192.168.0.0/16",
        "SubnetInfoList": [
            {
                "Name": "Subnet-01",
                "IPv4_CIDR": "192.168.1.0/24"
            }
        ]
    }
}

제가 Spider 에 날린 요청 (잘못된 요청입니다):

{
  "ConnectionName": "aws-us-east-1-config",
  "ReqInfo": {
    "IId": {
      "NameId": "VPC-01",
      "SystemId": "VPC-01"
    },
    "IPv4_CIDR": "192.168.0.0/16",
    "SubnetInfoList": [
      {
        "IId": {
          "NameId": "",
          "SystemId": ""
        },
        "IPv4_CIDR": "192.168.1.0/24",
        "KeyValueList": null
      }
    ]
  }
}

제가 예상한 결과:
Spider 가
"ReqInfo.Name 이 비어 있습니다" 라고 에러를 출력하고
AWS VPC 를 생성하지 않음


현재 동작:
Spider 가
Name (Label) 없는 AWS VPC 를 생성하고
HTTP 500 에러를 리턴함

{
    "time": "2020-04-29T17:56:08.300475343+09:00",
    "id": "",
    "remote_ip": "127.0.0.1",
    "host": "localhost:1024",
    "method": "POST",
    "uri": "/spider/vpc",
    "user_agent": "Go-http-client/1.1",
    "status": 500,
    "error": "",
    "latency": 5574431517,
    "latency_human": "5.574431517s",
    "bytes_in": 365,
    "bytes_out": 36
}

Bug: GET aws publicip with invalid `eipalloc` ID returns an empty JSON object, not an error message

HTTP req:
GET {{spider_ip}}:{{spider_port}}/publicip/{{spider_publicipId}}?connection_name={{connection_name}} with invalid {{spider_publicipId}}
(e.g. {{spider_publicipId}} that does not exist)


HTTP res:
Expected:

{
    "message": "InvalidPublicIP.NotFound: The public IP 'eipalloc-081849160f2b98917' does not exist\n\tstatus code: 400, request id: 1a4b8bf9-2079-4c82-b549-64991b8afd4d"
}

What actually got:

{
    "Name": "",
    "PublicIP": "",
    "OwnedVMID": "",
    "Status": "",
    "KeyValueList": null
}

[Improv. req.] 존재하지 않는 SG 조회 시 에러 메시지 개선

(대조군)

  • 존재하지 않는 VPC 조회 시

[Request]
curl -sX GET http://localhost:1024/spider/vpc/VPC-01 -H 'Content-Type: application/json' -d '{ "ConnectionName": "'${CONN_CONFIG}'"}' | json_pp

[Response]

{
   "message" : "[aws-us-east-1-config:vpc:VPC-01] does not exist!"
}

  • 존재하지 않는 SG 조회 시

[Request]
curl -sX GET http://localhost:1024/spider/securitygroup/SG-01 -H 'Content-Type: application/json' -d '{ "ConnectionName": "'${CONN_CONFIG}'"}' | json_pp

[Response]

{
   "message" : "Internal Server Error"
}

[Console log]

[CLOUD-BARISTA].[INFO]: 2020-05-07 07:58:33 SecurityHandler.go:311, github.com/cloud-barista/cb-spider/cloud-control-manager/cloud-driver/drivers/aws/resources.(*AwsSecurityHandler).GetSecurity() - err : <nil>
{"time":"2020-05-07T07:58:33.275060333+09:00","level":"-","prefix":"echo","file":"recover.go","line":"73","message":"[PANIC RECOVER] runtime error: index out of range goroutine 637 [running]:\ngithub.com/labstack/echo/middleware.RecoverWithConfig.func1.1.1(0x109d380, 0x1000, 0xc000580000, 0x11b0080, 0xc0005845a0)\n\t/root/go/src/github.com/labstack/echo/middleware/recover.go:71 +0xf1\npanic(0xf7ada0, 0x1934020)\n\t/usr/local/go/src/runtime/panic.go:522 +0x1b5\nmain.getSecurity(0x11b0080, 0xc0005845a0, 0x0, 0x0)\n\t/root/cb-spider/api-runtime/rest-runtime/CCMRest.go:1078 +0xe0b\ngithub.com/labstack/echo.(*Echo).add.func1(0x11b0080, 0xc0005845a0, 0x109d380, 0x1000)\n\t/root/go/src/github.com/labstack/echo/echo.go:512 +0x87\ngithub.com/labstack/echo/middleware.RecoverWithConfig.func1.1(0x11b0080, 0xc0005845a0, 0x0, 0x0)\n\t/root/go/src/github.com/labstack/echo/middleware/recover.go:78 +0xd5\ngithub.com/labstack/echo/middleware.LoggerWithConfig.func2.1(0x11b0080, 0xc0005845a0, 0x1076ebc, 0x1b)\n\t/root/go/src/github.com/labstack/echo/middleware/logger.go:117 +0x1c0\ngithub.com/labstack/echo/middleware.CORSWithConfig.func1.1(0x11b0080, 0xc0005845a0, 0x3, 0x4)\n\t/root/go/src/github.com/labstack/echo/middleware/cors.go:121 +0x478\ngithub.com/labstack/echo.(*Echo).ServeHTTP(0xc0001901e0, 0x1198d80, 0xc0004fe9a0, 0xc0002c6300)\n\t/root/go/src/github.com/labstack/echo/echo.go:623 +0x16e\nnet/http.serverHandler.ServeHTTP(0xc00017cea0, 0x1198d80, 0xc0004fe9a0, 0xc0002c6300)\n\t/usr/local/go/src/net/http/server.go:2774 +0xa8\nnet/http.(*conn).serve(0xc0005843c0, 0x119b180, 0xc0000ba940)\n\t/usr/local/go/src/net/http/server.go:1878 +0x851\ncreated by net/http.(*Server).Serve\n\t/usr/local/go/src/net/http/server.go:2884 +0x2f4\n\ngoroutine 1 [IO wait]:\ninternal/poll.runtime_pollWait(0x7f7b843e0d08, 0x72, 0x0)\n\t/usr/local/go/src/runtime/netpoll.go:182 +0x56\ninternal/poll.(*pollDesc).wait(0xc0000ed198, 0x72, 0x0, 0x0, 0x1068825)\n\t/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x9b\ninternal/poll.(*pollDesc).waitRead(...)\n\t/usr/local/go/src/internal/poll/fd_poll_runtime.go:92\ninternal/poll.(*FD).Accept(0xc0000ed180, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)\n\t/usr/local/go/src/internal/poll/fd_unix.go:384 +0x1ba\nnet.(*netFD).accept(0xc0000ed180, 0xb4, 0x0, 0x0)\n\t/usr/local/go/src/net/fd_unix.go:238 +0x42\nnet.(*TCPListener).accept(0xc0000b6ab0, 0x3, 0xc000046570, 0xc000046500)\n\t/usr/local/go/src/net/tcpsock_posix.go:139 +0x32\nnet.(*TCPListener).AcceptTCP(0xc0000b6ab0, 0x109f688, 0xc0001574d0, 0x6f6067dd)\n\t/usr/local/go/src/net/tcpsock.go:247 +0x48\ngithub.com/labstack/echo.tcpKeepAliveListener.Accept(0xc0000b6ab0, 0xc0001574f8, 0x7e2476, 0x5eb34119, 0x76adbf)\n\t/root/go/src/github.com/labstack/echo/echo.go:859 +0x2f\nnet/http.(*Server).Serve(0xc00017cea0, 0x1195500, 0xc0000b6ab8, 0x0, 0x0)\n\t/usr/local/go/src/net/http/server.go:2859 +0x22d\ngithub.com/labstack/echo.(*Echo).StartServer(0xc0001901e0, 0xc00017cea0, 0x0, 0x1065f04)\n\t/root/go/src/github.com/labstack/echo/echo.go:714 +0x388\ngithub.com/labstack/echo.(*Echo).Start(...)\n\t/root/go/src/github.com/labstack/echo/echo.go:634\nmain.ApiServer(0xc000157880, 0x2d, 0x2d, 0x10665e9, 0x5)\n\t/root/cb-spider/api-runtime/rest-runtime/CBSpiderRuntime.go:171 +0x54a\nmain.main()\n\t/root/cb-spider/api-runtime/rest-runtime/CBSpiderRuntime.go:139 +0x3dc\n\ngoroutine 19 [chan receive, 698 minutes]:\ngopkg.in/natefinch/lumberjack%2ev2.(*Logger).millRun(0xc0000b8420)\n\t/root/go/src/gopkg.in/natefinch/lumberjack.v2/lumberjack.go:379 +0x58\ncreated by gopkg.in/natefinch/lumberjack%2ev2.(*Logger).mill.func1\n\t/root/go/src/gopkg.in/natefinch/lumberjack.v2/lumberjack.go:390 +0x79\n\ngoroutine 21 [select, 3 minutes]:\ngo.etcd.io/etcd/vendor/google.golang.org/grpc.(*ccBalancerWrapper).watcher(0xc0000baec0)\n\t/root/go/src/go.etcd.io/etcd/vendor/google.golang.org/grpc/balancer_conn_wrappers.go:69 +0xc1\ncreated by go.etcd.io/etcd/vendor/google.golang.org/grpc.newCCBalancerWrapper\n\t/root/go/src/go.etcd.io/etcd/vendor/google.golang.org/grpc/balancer_conn_wrappers.go:60 +0x16f\n\ngoroutine 22 [IO wait, 3 minutes]:\ninternal/poll.runtime_pollWait(0x7f7b843e0c38, 0x77, 0xc00008ac00)\n\t/usr/local/go/src/runtime/netpoll.go:182 +0x56\ninternal/poll.(*pollDesc).wait(0xc0000ec918, 0x77, 0x119b200, 0xc0000b8240, 0xc0000ec900)\n\t/usr/local/go/src/in\n"}
{"time":"2020-05-07T07:58:33.275186782+09:00","id":"","remote_ip":"127.0.0.1","host":"localhost:1024","method":"GET","uri":"/spider/securitygroup/SG-01","user_agent":"curl/7.58.0","status":500,"error":"","latency":253978891,"latency_human":"253.978891ms","bytes_in":43,"bytes_out":36}

[Driver Source 이전 요청 및 가이드]-ASAP

드라이버 개발이 PoC 수준을 넘어섰고,
아메리카노 버전 통합 개발을 위하여,
CB-Spider 작업 공간을 정식 Repos로 이사하고자 합니다.

  • 옛집: <github.com/cloud-barista/poc-cb-spider> (저장소는 계속 유지)
  • 새집: <github.com/cloud-barista/cb-spider>

<주요 이전 절차> 는 다음과 같습니다.
(1) 현재 개발 중인 버전 poc-cb-spider 반영(컴파일 오류 없는 상태)
(2) 기관별 드라이버 소스 cb-spider Repos에 추가

  • 드라이버별 시험에 필요한 임시 설정 파일 등도 일단, 함께 추가
  • 추가 위치: github.com/cloud-barista/cb-spider/cloud-control-manager/cloud-driver/drivers/* (path 고정, 생성해둠)

(3) 패키지 path 수정 등 컴파일 오류 없는 상태 반영

  • 시험 제외: 시험은 정식 버전 통합 후 필요시점에 별도 요청 드리겠습니다.

(4) 완료 후 slack으로 공지

감사합니다.

현재 Dockerfile 로 docker build 실패하는 문제

@powerkimhub


docker build --tag cloudbaristahub/cb-spider:v0.1.2-20200403 . 2>&1 > /tmp/spider-docker-build-error.txt

The command '/bin/sh -c GOOS=linux go build -tags cb-spider -o cb-spider -v' returned a non-zero code: 1

vi /tmp/spider-docker-build-error.txt

펼치기 / 숨기기
Sending build context to Docker daemon  348.1MB^M^M
Step 1/20 : FROM golang:1.12.4 AS builder
 ---> b860ab44e93e
Step 2/20 : ENV GO111MODULE on
 ---> Using cache
 ---> 1dce1fa79997
Step 3/20 : ADD . /go/src/github.com/cloud-barista/cb-spider
 ---> Using cache
 ---> bcfdcf949018
Step 4/20 : WORKDIR /go/src/github.com/cloud-barista/cb-spider
 ---> Running in 63b9104a4b7f
Removing intermediate container 63b9104a4b7f
 ---> 97cc1583978d
Step 5/20 : RUN ./build_all_driver_lib.sh
 ---> Running in e85ea3ae663b

============ build aws ... ============
^[[91mgo: finding github.com/rackspace/gophercloud v1.0.0
^[[0m^[[91mgo: finding github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f
^[[0m^[[91mgo: finding github.com/modern-go/reflect2 v1.0.1
^[[0m^[[91mgo: finding github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
^[[0m^[[91mgo: finding github.com/aliyun/alibaba-cloud-sdk-go v1.61.78
^[[0m^[[91mgo: finding github.com/grpc-ecosystem/grpc-gateway v1.14.3
^[[0m^[[91mgo: finding github.com/soheilhy/cmux v0.1.4
^[[0m^[[91mgo: finding go.etcd.io/etcd v3.3.19+incompatible
^[[0m^[[91mgo: finding sigs.k8s.io/yaml v1.2.0
^[[0m^[[91mgo: finding gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
^[[0m^[[91mgo: finding github.com/xujiajun/nutsdb v0.5.0
^[[0m^[[91mgo: finding github.com/cloud-barista/cb-log v0.0.0-20200117022531-82070963ca10
^[[0m^[[91mgo: finding github.com/coreos/go-systemd/v22 v22.0.0
^[[0m^[[91mgo: finding github.com/cloud-barista/cb-store v0.0.0-20200324092155-64d4df337031
^[[0m^[[91mgo: finding golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
^[[0m^[[91mgo: finding gopkg.in/yaml.v2 v2.2.8
^[[0m^[[91mgo: finding golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59
^[[0m^[[91mgo: finding github.com/prometheus/client_golang v1.5.1
^[[0m^[[91mgo: finding github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2
^[[0m^[[91mgo: finding github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e
^[[0m^[[91mgo: finding github.com/sirupsen/logrus v1.5.0
^[[0m^[[91mgo: finding github.com/xujiajun/gorouter v1.2.0
^[[0m^[[91mgo: finding github.com/coreos/etcd v3.3.19+incompatible
^[[0m^[[91mgo: finding github.com/ghodss/yaml v1.0.0
^[[0m^[[91mgo: finding github.com/gogo/protobuf v1.3.1
^[[0m^[[91mgo: finding golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be
^[[0m^[[91mgo: finding github.com/coreos/go-semver v0.3.0
^[[0m^[[91mgo: finding github.com/gorilla/websocket v1.4.2
^[[0m^[[91mgo: finding github.com/stretchr/testify v1.3.0
^[[0m^[[91mgo: finding github.com/coreos/bbolt v0.0.0-00010101000000-000000000000
^[[0m^[[91mgo: finding github.com/labstack/echo v3.3.10+incompatible
^[[0m^[[91mgo: finding gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
^[[0m^[[91mgo: finding github.com/konsorten/go-windows-terminal-sequences v1.0.1
^[[0m^[[91mgo: finding gopkg.in/natefinch/lumberjack.v2 v2.0.0
^[[0m^[[91mgo: finding github.com/stretchr/testify v1.4.0
^[[0m^[[91mgo: finding github.com/grpc-ecosystem/go-grpc-middleware v1.2.0
^[[0m^[[91mgo: finding github.com/kisielk/errcheck v1.2.0
^[[0m^[[91mgo: finding github.com/pmezard/go-difflib v1.0.0
^[[0m^[[91mgo: finding github.com/racker/perigee v0.1.0
^[[0m^[[91mgo: github.com/coreos/[email protected]: unknown revision 000000000000
^[[0m^[[91mgo: finding github.com/aws/aws-sdk-go v1.29.31
^[[0m^[[91mgo: finding github.com/google/go-cmp v0.4.0
^[[0m^[[91mgo: finding github.com/bwmarrin/snowflake v0.3.0
^[[0m^[[91mgo: finding github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
^[[0m^[[91mgo: finding golang.org/x/sys v0.0.0-20200122134326-e047566fdf82
^[[0m^[[91mgo: finding github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest/validation v0.2.0
^[[0m^[[91mgo: finding github.com/cespare/xxhash/v2 v2.1.1
^[[0m^[[91mgo: finding github.com/rogpeppe/fastuuid v1.2.0
^[[0m^[[91mgo: finding github.com/beorn7/perks v1.0.1
^[[0m^[[91mgo: finding github.com/json-iterator/go v1.1.5
^[[0m^[[91mgo: finding gopkg.in/yaml.v2 v2.2.3
^[[0m^[[91mgo: finding github.com/bramvdbogaerde/go-scp v0.0.0-20200119201711-987556b8bdd7
^[[0m^[[91mgo: finding golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e
^[[0m^[[91mgo: finding github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af
^[[0m^[[91mgo: finding github.com/google/uuid v1.1.1
^[[0m^[[91mgo: finding github.com/stretchr/testify v1.2.2
^[[0m^[[91mgo: finding google.golang.org/appengine v1.4.0
^[[0m^[[91mgo: finding github.com/snowzach/rotatefilehook v0.0.0-20180327172521-2f64f265f58c
^[[0m^[[91mgo: finding github.com/kisielk/gotool v1.0.0
^[[0m^[[91mgo: finding github.com/kr/pretty v0.1.0
^[[0m^[[91mgo: finding gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15
^[[0m^[[91mgo: finding github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6
^[[0m^[[91mgo: finding google.golang.org/api v0.20.0
^[[0m^[[91mgo: finding github.com/xujiajun/utils v0.0.0-20190123093513-8bf096c4f53b
^[[0m^[[91mgo: finding github.com/valyala/fasttemplate v1.1.0
^[[0m^[[91mgo: finding gopkg.in/ini.v1 v1.42.0
^[[0m^[[91mgo: finding golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3
^[[0m^[[91mgo: finding github.com/golang/protobuf v1.3.2
^[[0m^[[91mgo: finding golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4
^[[0m^[[91mgo: finding github.com/xujiajun/mmap-go v1.0.1
^[[0m^[[91mgo: finding github.com/json-iterator/go v1.1.9
^[[0m^[[91mgo: finding gopkg.in/yaml.v2 v2.2.5
^[[0m^[[91mgo: finding github.com/davecgh/go-spew v1.1.1
^[[0m^[[91mgo: finding go.etcd.io/bbolt v1.3.4
^[[0m^[[91mgo: finding github.com/godbus/dbus/v5 v5.0.3
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest/to v0.3.0
^[[0m^[[91mgo: finding github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc
^[[0m^[[91mgo: finding github.com/jonboulle/clockwork v0.1.0
^[[0m^[[91mgo: finding github.com/prometheus/client_model v0.2.0
^[[0m^[[91mgo: finding cloud.google.com/go v0.34.0
^[[0m^[[91mgo: finding github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a
^[[0m^[[91mgo: finding golang.org/x/sys v0.0.0-20190412213103-97732733099d
^[[0m^[[91mgo: finding github.com/prometheus/common v0.9.1
^[[0m^[[91mgo: finding github.com/prometheus/procfs v0.0.8
^[[0m^[[91mgo: finding github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
^[[0m^[[91mgo: finding google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c
^[[0m^[[91mgo: finding github.com/labstack/gommon v0.3.0
^[[0m^[[91mgo: finding github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest/azure/auth v0.4.2
^[[0m^[[91mgo: finding github.com/Azure/azure-sdk-for-go v40.5.0+incompatible
^[[0m^[[91mgo: finding golang.org/x/sys v0.0.0-20190422165155-953cdadca894
^[[0m^[[91mgo: finding go.uber.org/zap v1.14.1
^[[0m^[[91mgo: finding github.com/mitchellh/mapstructure v1.2.2
^[[0m^[[91mgo: finding golang.org/x/net v0.0.0-20191002035440-2ec189313ef0
^[[0m^[[91mgo: finding google.golang.org/grpc v1.24.0
^[[0m^[[91mgo: error loading module requirements
^[[0m^[[91mchmod: cannot access 'aws-driver-v1.0.so': No such file or directory
^[[0m^[[91mmv: cannot stat './aws-driver-v1.0.so': No such file or directory

^[[0m============ build azure ... ============
^[[91mgo: finding github.com/coreos/bbolt v0.0.0-00010101000000-000000000000
^[[0m^[[91mgo: finding github.com/davecgh/go-spew v1.1.0
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest v0.9.0
^[[0m^[[91mgo: finding github.com/mattn/go-colorable v0.1.2
^[[0m^[[91mgo: finding github.com/go-logfmt/logfmt v0.4.0
^[[0m^[[91mgo: finding golang.org/x/sync v0.0.0-20190423024810-112230192c58
^[[0m^[[91mgo: finding golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961
^[[0m^[[91mgo: finding golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c
^[[0m^[[91mgo: finding github.com/valyala/fasttemplate v1.0.1
^[[0m^[[91mgo: finding google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55
^[[0m^[[91mgo: finding github.com/google/go-cmp v0.3.0
^[[0m^[[91mgo: finding go.uber.org/atomic v1.4.0
^[[0m^[[91mgo: finding golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135
^[[0m^[[91mgo: github.com/coreos/[email protected]: unknown revision 000000000000
^[[0m^[[91mgo: finding github.com/pkg/errors v0.9.1
^[[0m^[[91mgo: finding google.golang.org/grpc v1.27.0
^[[0m^[[91mgo: finding github.com/dimchansky/utfbom v1.1.0
^[[0m^[[91mgo: finding golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2
^[[0m^[[91mgo: finding google.golang.org/grpc v1.19.0
^[[0m^[[91mgo: finding github.com/go-kit/kit v0.9.0
^[[0m^[[91mgo: finding go.uber.org/zap v1.10.0
^[[0m^[[91mgo: finding golang.org/x/net v0.0.0-20200202094626-16171245cfb2
^[[0m^[[91mgo: finding golang.org/x/text v0.3.2
^[[0m^[[91mgo: finding github.com/hashicorp/golang-lru v0.5.1
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest v0.9.3
^[[0m^[[91mgo: finding github.com/valyala/bytebufferpool v1.0.0
^[[0m^[[91mgo: finding go.uber.org/atomic v1.6.0
^[[0m^[[91mgo: finding golang.org/x/text v0.3.0
^[[0m^[[91mgo: finding honnef.co/go/tools v0.0.1-2019.2.3
^[[0m^[[91mgo: finding honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc
^[[0m^[[91mgo: finding github.com/gogo/protobuf v1.2.1
^[[0m^[[91mgo: finding github.com/googleapis/gax-go/v2 v2.0.5
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest/adal v0.8.1
^[[0m^[[91mgo: finding github.com/mattn/go-isatty v0.0.9
^[[0m^[[91mgo: finding go.opencensus.io v0.21.0
^[[0m^[[91mgo: finding github.com/sirupsen/logrus v1.4.2
^[[0m^[[91mgo: finding golang.org/x/tools v0.0.0-20190226205152-f727befe758c
^[[0m^[[91mgo: finding golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413
^[[0m^[[91mgo: finding honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099
^[[0m^[[91mgo: finding github.com/opentracing/opentracing-go v1.1.0
^[[0m^[[91mgo: finding golang.org/x/exp v0.0.0-20190121172915-509febef88a4
^[[0m^[[91mgo: finding google.golang.org/appengine v1.5.0
^[[0m^[[91mgo: finding github.com/go-sql-driver/mysql v1.5.0
^[[0m^[[91mgo: finding go.uber.org/multierr v1.5.0
^[[0m^[[91mgo: finding go.uber.org/multierr v1.1.0
^[[0m^[[91mgo: finding golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest/azure/cli v0.3.1
^[[0m^[[91mgo: finding golang.org/x/net v0.0.0-20190311183353-d8887717615a
^[[0m^[[91mgo: finding golang.org/x/lint v0.0.0-20190930215403-16217165b5de
^[[0m^[[91mgo: finding golang.org/x/lint v0.0.0-20190409202823-959b441ac422
^[[0m^[[91mgo: finding github.com/stretchr/objx v0.1.0
^[[0m^[[91mgo: finding github.com/go-stack/stack v1.8.0
^[[0m^[[91mgo: finding cloud.google.com/go v0.38.0
^[[0m^[[91mgo: finding github.com/pkg/errors v0.8.1
^[[0m^[[91mgo: finding golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b
^[[0m^[[91mgo: error loading module requirements
^[[0m^[[91mchmod: cannot access 'azure-driver-v1.0.so': No such file or directory
^[[0m^[[91mmv: cannot stat './azure-driver-v1.0.so': No such file or directory

^[[0m============ build cloudit ... ============
^[[91mgo: finding github.com/coreos/bbolt v0.0.0-00010101000000-000000000000
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/tracing v0.5.0
^[[0m^[[91mgo: finding github.com/golang/protobuf v1.2.0
^[[0m^[[91mgo: finding github.com/BurntSushi/toml v0.3.1
^[[0m^[[91mgo: finding github.com/google/renameio v0.1.0
^[[0m^[[91mgo: finding github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d
^[[0m^[[91mgo: finding github.com/google/gofuzz v1.0.0
^[[0m^[[91mgo: finding golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5
go: finding golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest/adal v0.8.0
^[[0m^[[91mgo: finding golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e
^[[0m^[[91mgo: finding cloud.google.com/go v0.26.0
^[[0m^[[91mgo: github.com/coreos/[email protected]: unknown revision 000000000000
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/logger v0.1.0
^[[0m^[[91mgo: finding golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a
^[[0m^[[91mgo: finding github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421
^[[0m^[[91mgo: finding github.com/client9/misspell v0.3.4
^[[0m^[[91mgo: finding golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e
^[[0m^[[91mgo: finding golang.org/x/tools v0.0.0-20190114222345-bf090417da8b
^[[0m^[[91mgo: finding golang.org/x/tools v0.0.0-20190311212946-11955173bddd
^[[0m^[[91mgo: finding github.com/rogpeppe/go-internal v1.3.0
^[[0m^[[91mgo: finding github.com/mitchellh/go-homedir v1.1.0
^[[0m^[[91mgo: finding golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a
^[[0m^[[91mgo: finding github.com/envoyproxy/protoc-gen-validate v0.1.0
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest/mocks v0.3.0
^[[0m^[[91mgo: finding golang.org/x/net v0.0.0-20190620200207-3b0461eec859
^[[0m^[[91mgo: finding github.com/golang/mock v1.1.1
^[[0m^[[91mgo: finding github.com/jtolds/gls v4.20.0+incompatible
^[[0m^[[91mgo: finding golang.org/x/net v0.0.0-20180826012351-8a410e7b638d
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest/date v0.2.0
^[[0m^[[91mgo: finding github.com/google/go-cmp v0.3.1
^[[0m^[[91mgo: finding golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e
^[[0m^[[91mgo: finding golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3
^[[0m^[[91mgo: finding github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473
^[[0m^[[91mgo: finding go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee
^[[0m^[[91mgo: finding golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f
^[[0m^[[91mgo: finding golang.org/x/sys v0.0.0-20180830151530-49385e6e1522
^[[0m^[[91mgo: finding golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7
^[[0m^[[91mgo: finding google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19
^[[0m^[[91mgo: finding google.golang.org/appengine v1.1.0
^[[0m^[[91mgo: finding github.com/hashicorp/golang-lru v0.5.0
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest/mocks v0.2.0
^[[0m^[[91mgo: finding golang.org/x/tools v0.0.0-20190328211700-ab21143f2384
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest/adal v0.5.0
^[[0m^[[91mgo: finding github.com/dgrijalva/jwt-go v3.2.0+incompatible
^[[0m^[[91mgo: finding github.com/google/go-cmp v0.2.0
^[[0m^[[91mgo: finding github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1
^[[0m^[[91mgo: finding google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8
^[[0m^[[91mgo: error loading module requirements
^[[0m^[[91mchmod: cannot access 'cloudit-driver-v1.0.so': No such file or directory
^[[0m^[[91mmv: cannot stat './cloudit-driver-v1.0.so': No such file or directory

^[[0m============ build gcp ... ============
^[[91mgo: finding github.com/coreos/bbolt v0.0.0-00010101000000-000000000000
^[[0m^[[91mgo: finding github.com/googleapis/gax-go/v2 v2.0.4
^[[0m^[[91mgo: finding github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024
^[[0m^[[91mgo: finding github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c
^[[0m^[[91mgo: finding golang.org/x/time v0.0.0-20181108054448-85acf8d2951c
^[[0m^[[91mgo: finding golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5
^[[0m^[[91mgo: finding golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2
^[[0m^[[91mgo: finding golang.org/x/tools v0.0.0-20190312170243-e65039ee4138
^[[0m^[[91mgo: finding golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563
^[[0m^[[91mgo: finding golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
^[[0m^[[91mgo: finding github.com/golang/mock v1.2.0
^[[0m^[[91mgo: finding github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223
^[[0m^[[91mgo: finding github.com/julienschmidt/httprouter v1.2.0
^[[0m^[[91mgo: github.com/coreos/[email protected]: unknown revision 000000000000
go: finding golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c
^[[0m^[[91mgo: finding github.com/prometheus/client_golang v1.0.0
^[[0m^[[91mgo: finding gopkg.in/errgo.v2 v2.1.0
^[[0m^[[91mgo: finding golang.org/x/net v0.0.0-20180724234803-3673e40ba225
^[[0m^[[91mgo: finding github.com/google/martian v2.1.0+incompatible
^[[0m^[[91mgo: finding golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3
^[[0m^[[91mgo: finding golang.org/x/net v0.0.0-20190213061140-3a22650c66bd
^[[0m^[[91mgo: finding github.com/stretchr/objx v0.1.1
^[[0m^[[91mgo: finding google.golang.org/api v0.4.0
^[[0m^[[91mgo: finding github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4
^[[0m^[[91mgo: finding github.com/matttproud/golang_protobuf_extensions v1.0.1
^[[0m^[[91mgo: finding gopkg.in/yaml.v2 v2.2.4
^[[0m^[[91mgo: finding golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f
^[[0m^[[91mgo: finding github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57
^[[0m^[[91mgo: finding golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421
^[[0m^[[91mgo: finding gopkg.in/alecthomas/kingpin.v2 v2.2.6
^[[0m^[[91mgo: finding golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
^[[0m^[[91mgo: finding golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6
^[[0m^[[91mgo: finding golang.org/x/net v0.0.0-20190613194153-d28f0bde5980
^[[0m^[[91mgo: finding github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751
^[[0m^[[91mgo: finding google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7
^[[0m^[[91mgo: finding honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a
^[[0m^[[91mgo: error loading module requirements
^[[0m^[[91mchmod: cannot access 'gcp-driver-v1.0.so': No such file or directory
^[[0m^[[91mmv: cannot stat './gcp-driver-v1.0.so': No such file or directory

^[[0m============ build openstack ... ============
^[[91mgo: finding github.com/coreos/bbolt v0.0.0-00010101000000-000000000000
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest/date v0.1.0
^[[0m^[[91mgo: finding github.com/prometheus/common v0.4.1
^[[0m^[[91mgo: finding github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90
^[[0m^[[91mgo: finding github.com/beorn7/perks v1.0.0
^[[0m^[[91mgo: finding github.com/kr/text v0.1.0
^[[0m^[[91mgo: finding github.com/kisielk/errcheck v1.1.0
^[[0m^[[91mgo: finding golang.org/x/sys v0.0.0-20181221143128-b4a75ba826a6
^[[0m^[[91mgo: finding golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5
^[[0m^[[91mgo: finding golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529
^[[0m^[[91mgo: finding github.com/golang/protobuf v1.3.1
^[[0m^[[91mgo: finding github.com/json-iterator/go v1.1.6
^[[0m^[[91mgo: finding github.com/mattn/go-isatty v0.0.8
^[[0m^[[91mgo: finding gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127
^[[0m^[[91mgo: github.com/coreos/[email protected]: unknown revision 000000000000
^[[0m^[[91mgo: finding github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515
^[[0m^[[91mgo: finding gopkg.in/yaml.v2 v2.2.2
^[[0m^[[91mgo: finding github.com/prometheus/procfs v0.0.2
^[[0m^[[91mgo: finding github.com/Azure/go-autorest/autorest/mocks v0.1.0
^[[0m^[[91mgo: error loading module requirements
^[[0m^[[91mchmod: cannot access 'openstack-driver-v1.0.so': No such file or directory
^[[0m^[[91mmv: cannot stat './openstack-driver-v1.0.so': No such file or directory

^[[0m============ build alibaba ... ============
^[[91mgo: finding github.com/coreos/bbolt v0.0.0-00010101000000-000000000000
^[[0m^[[91mgo: finding github.com/go-kit/kit v0.8.0
^[[0m^[[91mgo: finding github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973
go: finding github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910
^[[0m^[[91mgo: finding github.com/sirupsen/logrus v1.2.0
^[[0m^[[91mgo: finding github.com/census-instrumentation/opencensus-proto v0.2.1
^[[0m^[[91mgo: finding github.com/kr/pty v1.1.1
^[[0m^[[91mgo: finding github.com/go-logfmt/logfmt v0.3.0
^[[0m^[[91mgo: finding golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223
^[[0m^[[91mgo: finding google.golang.org/grpc v1.23.0
^[[0m^[[91mgo: finding golang.org/x/tools v0.0.0-20180221164845-07fd8470d635
^[[0m^[[91mgo: finding github.com/prometheus/client_golang v0.9.1
^[[0m^[[91mgo: finding github.com/pkg/errors v0.8.0
^[[0m^[[91mgo: github.com/coreos/[email protected]: unknown revision 000000000000
^[[0m^[[91mgo: finding github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d
^[[0m^[[91mgo: finding github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf
^[[0m^[[91mgo: finding github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4
^[[0m^[[91mgo: finding github.com/gogo/protobuf v1.1.1
^[[0m^[[91mgo: finding gopkg.in/yaml.v2 v2.2.1
^[[0m^[[91mgo: finding github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc
^[[0m^[[91mgo: finding golang.org/x/net v0.0.0-20181114220301-adae6a3d119a
^[[0m^[[91mgo: error loading module requirements
^[[0m^[[91mchmod: cannot access 'alibaba-driver-v1.0.so': No such file or directory
^[[0m^[[91mmv: cannot stat './alibaba-driver-v1.0.so': No such file or directory

^[[0mRemoving intermediate container e85ea3ae663b
 ---> 6df6aceb4ed8
Step 6/20 : WORKDIR api-runtime/rest-runtime
 ---> Running in 712958638b1c
Removing intermediate container 712958638b1c
 ---> 39b4a7609b93
Step 7/20 : RUN GOOS=linux go build -tags cb-spider -o cb-spider -v
 ---> Running in ac7258e454f2
^[[91mgo: finding github.com/coreos/bbolt v0.0.0-00010101000000-000000000000
^[[0m^[[91mFetching https://golang.org/x/sys?go-get=1
Fetching https://golang.org/x/crypto?go-get=1
^[[0m^[[91mParsing meta tags from https://golang.org/x/crypto?go-get=1 (status code 200)
^[[0m^[[91mget "golang.org/x/crypto": found meta tag get.metaImport{Prefix:"golang.org/x/crypto", VCS:"git", RepoRoot:"https://go.googlesource.com/crypto"} at https://golang.org/x/crypto?go-get=1
^[[0m^[[91mgo: finding golang.org/x/crypto v0.0.0-20180904163835-0709b304e793
^[[0m^[[91mParsing meta tags from https://golang.org/x/sys?go-get=1 (status code 200)
^[[0m^[[91mget "golang.org/x/sys": found meta tag get.metaImport{Prefix:"golang.org/x/sys", VCS:"git", RepoRoot:"https://go.googlesource.com/sys"} at https://golang.org/x/sys?go-get=1
^[[0m^[[91mgo: finding golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33
^[[0m^[[91mgo: github.com/coreos/[email protected]: unknown revision 000000000000
go: error loading module requirements

Error occurs when building drivers

go version

go version go1.13.3 linux/amd64

pwd

/root/go/src/github.com/cloud-barista/cb-spider

./build_all_driver_lib.sh

============ build aws ... ============
-buildmode=plugin requires exactly one main package
chmod: cannot access ‘aws-driver-v1.0.so’: No such file or directory
mv: cannot stat ‘./aws-driver-v1.0.so’: No such file or directory
...

pwd

/root/go/src/github.com/cloud-barista/cb-spider/cloud-control-manager/cloud-driver/drivers/aws

./build_driver_lib.sh

-buildmode=plugin requires exactly one main package
chmod: cannot access ‘aws-driver-v1.0.so’: No such file or directory
mv: cannot stat ‘./aws-driver-v1.0.so’: No such file or directory

FYI
vi build_driver_lib.sh

#!/bin/bash
source ../../../../setup.env

DRIVERLIB_PATH=$CBSPIDER_ROOT/cloud-driver-libs
DRIVERFILENAME=aws-driver-v1.0

rm -rf $DRIVERLIB_PATH/${DRIVERFILENAME}.so
go build -buildmode=plugin -o ${DRIVERFILENAME}.so AwsDriver-lib.go
chmod +x ${DRIVERFILENAME}.so
mv ./${DRIVERFILENAME}.so $DRIVERLIB_PATH

Suggestion: Implement duplication check in vnetwork creation process.

Reproducing steps:

  1. POST vnetwork with Name: CB-VNet-Subnet
{
    "Name": "CB-VNet-Subnet"
}
  1. Response:
{
    "Id": "subnet-0c811d2d00228e931",
    "Name": "CB-VNet-Subnet",
    "AddressPrefix": "192.168.0.0/16",
    "Status": "available",
    "KeyValueList": [
        {
            "Key": "VpcId",
            "Value": "vpc-0d9e065f9b598212b"
        },
        {
            "Key": "MapPublicIpOnLaunch",
            "Value": "false"
        },
        {
            "Key": "AvailableIpAddressCount",
            "Value": "65530"
        },
        {
            "Key": "AvailabilityZone",
            "Value": "ap-northeast-2a"
        }
    ]
}
  1. POST vnetwork with Name: CB-VNet-Subnet again
{
    "Name": "CB-VNet-Subnet"
}
  1. Expected response:
{"message":"InvalidSubnet.Duplicate: The subnet 'CB-VNet-Subnet' already exists.\n\tstatus code: 400, request id: 96bc4fff-d36d-4b74-bb43-317b84e6730d"}
  1. What actually got:
{
    "Id": "subnet-0c811d2d00228e931",
    "Name": "CB-VNet-Subnet",
    "AddressPrefix": "192.168.0.0/16",
    "Status": "available",
    "KeyValueList": [
        {
            "Key": "VpcId",
            "Value": "vpc-0d9e065f9b598212b"
        },
        {
            "Key": "MapPublicIpOnLaunch",
            "Value": "false"
        },
        {
            "Key": "AvailableIpAddressCount",
            "Value": "65530"
        },
        {
            "Key": "AvailabilityZone",
            "Value": "ap-northeast-2a"
        }
    ]
}

다중 VM 생성 병렬 처리 이슈

CB-Tumblebug과 통합 테스트 중에 확인한 이슈 입니다.

CB-Tumblebug은 다중 VM들이 포함된 MCIS를 생성시, VM 생성을 병렬(고루틴)로 처리하고 있습니다.

기존 아메리카노 Spider와 통합시 다중 VM 생성이 병렬로 처리가 가능했는데,

리모델링된 CB-Spider을 통합하고 테스트해보니,
Spider 쪽에서 VM 생성 Call을 순차적(병렬X)으로 처리하여 응답하는 것 같습니다.
(CSP 콘솔상에서도 VM이 순차적으로 생성됨)

병렬 처리가 안되면 MCIS 생성 시간이 매우 많이 걸릴 수 있어서, 다소 문제가 될 수 있습니다.
(VM이 10개 포함된 MCIS 생성 소요 시간 예, 병렬지원: 40초, 미지원: 7분)

AWS 테스트를 진행하다가 해당 이슈를 발견하였고,
다른 CSP 드라이버의 경우에는 확인하지 못했습니다.
(MCIS 생성시, Spider에게 VM 생성 콜이 동시에 발생하며, TB는 응답을 대기하고 있습니다. 이때 Spider에서 VM 생성응답을 병렬로 주지 않고, 순차적으로 주고 있습니다.)

확인 부탁드리며, Tumblebug 입장에서는 시급한 사항으로 판단됩니다. (TB 관련 시연 및 최적 선정 PoC를 위한 다수의 VM 테스트 등)

[Remodeling] VPC/Subnet 개정 인터페이스 반영

(참고) 리모델링 계획(안): #131

  • 리모델링 중 build 오류 등 가능함, 동작 버전은 다음 Tag 버전 참고
<Tagging: v0.1.2> https://github.com/cloud-barista/cb-spider/releases/tag/v0.1.2
$ git clone --branch v0.1.2 https://github.com/cloud-barista/cb-spider.git
  • 카푸치노 버전을 위한 VPC/Subnet 관련 드라이버 공통 인터페이스 관련하여,
  • 아래 자료를 참조하시어, 반영 부탁드립니다.

(CB-Spider)-CSP별 VPC,Subnet 비교 분석 및 CB-Spider VPC,Subnet 규격 정의-2020.04.09.pptx

TODO: Implement duplication check in publicip creation process.

Reproducing steps:

  1. POST publicip with Name: publicipt01
{
    "Name": "publicipt01"
}
  1. Response:
{
        "Name": "eipalloc-05928b1e6a289b25f",
        "PublicIP": "13.124.219.180",
        "OwnedVMID": "",
        "Status": "",
        "KeyValueList": [
            {
                "Key": "Domain",
                "Value": "vpc"
            },
            {
                "Key": "PublicIpv4Pool",
                "Value": "amazon"
            },
            {
                "Key": "AllocationId",
                "Value": "eipalloc-05928b1e6a289b25f"
            },
            {
                "Key": "Name",
                "Value": "publicipt01"
            }
        ]
    }
  1. POST publicip with Name: publicipt01 again
{
    "Name": "publicipt01"
}
  1. Expected response:
{"message":"InvalidElasticIP.Duplicate: The Elastic IP with name 'publicipt01' already exists.\n\tstatus code: 400, request id: 96bc4fff-d36d-4b74-bb43-317b84e6730d"}
  1. What actually got:
    Another new Public IP with same Name
{
        "Name": "eipalloc-06a264b25d3267895",
        "PublicIP": "15.165.3.190",
        "OwnedVMID": "",
        "Status": "",
        "KeyValueList": [
            {
                "Key": "Domain",
                "Value": "vpc"
            },
            {
                "Key": "PublicIpv4Pool",
                "Value": "amazon"
            },
            {
                "Key": "AllocationId",
                "Value": "eipalloc-06a264b25d3267895"
            },
            {
                "Key": "Name",
                "Value": "publicipt01"
            }
        ]
    }

OpenStack 드라이버 빌드 실패

최신 commit 에서

commit 84e0878694a27135ae8f5b6df5f6e5278c8f50c0 (HEAD -> master, upstream/master, upstream/HEAD)
Author: powerkim <[email protected]>
Date:   Tue May 19 02:22:49 2020 +0900

    refined for library type of Openstack driver

OpenStack 드라이버 빌드 실패합니다.

❯ ./build_all_driver_lib.sh
============ build aws ... ============
============ build azure ... ============
============ build openstack ... ============
stat OpenStackDriver-lib.go: no such file or directory
chmod: cannot access 'openstack-driver-v1.0.so': No such file or directory
mv: cannot stat './openstack-driver-v1.0.so': No such file or directory

해당 경로에 가 보면
https://github.com/cloud-barista/cb-spider/tree/master/cloud-control-manager/cloud-driver/drivers/openstack

OpenStackDriver-lib.go 파일이 없습니다. (이 commit 에서 지워짐: b9dff4d)
OpenStackDriver.go 파일도 없습니다. (이 commit 에서 지워짐: 84e0878)


그리고
@pjini 진휘씨 같은데 맞나요? 안녕하세요 ㅎㅎ

제가 openstack/build_driver_lib.shfunction build() { 등의 부분을 추가했었는데요
b9dff4d 이 commit 에서 삭제되었습니다.
혹시 이유가 있을까요?

Spider 에 API call 할 때, JSON body format 이 변경되었음

Request:

POST {{spider_ip}}:{{spider_port}}/spider/publicip

{
    "Name": "jhseo-test",
    "ConnectionName": "aws-us-east-1-config"
}

Response:

{
    "Name": "",
    "Id": "eipalloc-099a1bff39d7f0fb3",
    "PublicIP": "3.208.206.24",
    "OwnedVMID": "",
    "Status": "",
    "KeyValueList": [
        {
            "Key": "Domain",
            "Value": "vpc"
        },
        {
            "Key": "PublicIpv4Pool",
            "Value": "amazon"
        },
        {
            "Key": "AllocationId",
            "Value": "eipalloc-099a1bff39d7f0fb3"
        },
        {
            "Key": "Name",
            "Value": ""
        }
    ]
}

콘솔에서 확인해 보면,
Key: Name 인 Key-Value pair 가 만들어지기는 했는데
Value: (null)


EIP


EmptyValue


[AWS VM PublicIP 할당 이슈: IGW 관련]

[AWS VM핸들러 이슈]

사용자가 생성한 VPC는 기본적으로 외부와의 인터넷이 단절된 상태로 생성됨.
즉, 사용자가 생성한 VPC에는 PublicIP를 할당할 수 없기 때문에
PublicIP를 할당 할 수 있도록 외부와의 인터넷이 가능하도록 생성된 VPC의 라우팅 구성이 필요함.
(예: 생성된 VPC에 인터넷게이트웨이를 생성 후 연결)

VPC 생성시 IGW(인터넷게이트웨이) 생성및 연결 로직을 반영 예정이며...
현재는 자동으로 생성된 CB-Net VPC에 수작업으로 IGW를 연결해야 VM 생성시 Public IP가 할당됨.

[연동 가능한 Provider 정보 제공 필요]

연동 가능한 Provider Name(CSP Name, Cloud Name) 정보 제공이 필요함.

  • (현재) 기준이 되는 Provider Name을 제공하지 않음.
  • (문제) Driver 등록 시 사용자가 대상 Provider 이름을 자유롭게 등록함.
    - Provider 이름에 대한 validation 불가
    - Provider Name이 일부 하드코딩되어 있음.
(예상) curl --request GET  {{ip}}:{{port}}/provider
[
  {
     "Provider": "AWS"
  },
  {
     "Provider": "AZURE"
  },
  {
     "Provider": "GCP"
  },
  {
     "Provider": "ALIBABA"
  },
  {
     "Provider": "CLOUDIT"
  },
  {
     "Provider": "OPENSTACK"
  }
]

Bug: AWS driver does not handle `FromPort` and `ToPort` properly.

Reproducing steps:

  1. POST securitygroup
{
    "Name": "jhseo-test1",
    "SecurityRules": [
        {
            "FromPort": "20",
            "ToPort": "22",
            "IPProtocol": "tcp",
            "Direction": "inbound"
        }
    ]
}
  1. Expected response:
{
    "Id": "sg-0c3dab1d6942d2352",
    "Name": "jhseo-test1",
    "Direction": "",
    "SecurityRules": [
        {
            "FromPort": "20",
            "ToPort": "22",
            "IPProtocol": "tcp",
            "Direction": "inbound"
        }
    ],
    "KeyValueList": [
        {
            "Key": "GroupName",
            "Value": "jhseo-test1"
        },
        {
            "Key": "VpcID",
            "Value": "vpc-0d9e065f9b598212b"
        },
        {
            "Key": "OwnerID",
            "Value": "635484366616"
        },
        {
            "Key": "Description",
            "Value": "jhseo-test1"
        }
    ]
}
  1. What actually got:
{
    "Id": "sg-0c3dab1d6942d2352",
    "Name": "jhseo-test1",
    "Direction": "",
    "SecurityRules": [
        {
            "FromPort": "22",
            "ToPort": "",
            "IPProtocol": "tcp",
            "Direction": "inbound"
        },
        {
            "FromPort": "",
            "ToPort": "",
            "IPProtocol": "-1",
            "Direction": "outbound"
        }
    ],
    "KeyValueList": [
        {
            "Key": "GroupName",
            "Value": "jhseo-test1"
        },
        {
            "Key": "VpcID",
            "Value": "vpc-0d9e065f9b598212b"
        },
        {
            "Key": "OwnerID",
            "Value": "635484366616"
        },
        {
            "Key": "Description",
            "Value": "jhseo-test1"
        }
    ]
}

[Modify the VMSpecHandler interface.]

  • VMSpec 정보 제공시 list/get의 범위는 Connection(driver, credential, region)으로 한정함
  • AS-IS: 인터페이스는 region을 입력 받고 있음.
  • TO-BE: 다른 자원 핸들러처럼 connection 정보에서 드라이버 내에서 region 정보를 얻어서 구현
  • 반영시기: #121 마무리 후
<AS-IS>
type VMSpecHandler interface {

        // Region: AWS=Region, GCP=Zone, Azure=Location
        ListVMSpec(Region string) ([]*VMSpecInfo, error)
        GetVMSpec(Region string, Name string) (VMSpecInfo, error)

        ListOrgVMSpec(Region string) (string, error)             // return string: json format
        GetOrgVMSpec(Region string, Name string) (string, error) // return string: json format
}

<TO-BE>
type VMSpecHandler interface {

        // Region: AWS=Region, GCP=Zone, Azure=Location
        ListVMSpec() ([]*VMSpecInfo, error)
        GetVMSpec(Name string) (VMSpecInfo, error)

        ListOrgVMSpec() (string, error)             // return string: json format
        GetOrgVMSpec(Name string) (string, error) // return string: json format
}


Suggestion: Modify VMHandler functions to accept list instead of one VM/VMreq

As-is:

type VMHandler interface {
	StartVM(vmReqInfo VMReqInfo) (VMInfo, error)
	SuspendVM(vmID string) error
	ResumeVM(vmID string) error
	RebootVM(vmID string) error
	TerminateVM(vmID string) error

	ListVMStatus() ([]*VMStatusInfo, error)
	GetVMStatus(vmID string) (VMStatus, error)

	ListVM() ([]*VMInfo, error)
	GetVM(vmID string) (VMInfo, error)
}

To-be:

type VMHandler interface {
	StartVM(vmReqInfo []VMReqInfo) ([]VMInfo, []error)
	SuspendVM(vmID []string) []error
	ResumeVM(vmID []string) []error
	RebootVM(vmID []string) []error
	TerminateVM(vmID []string) []error

	ListVMStatus() ([]*VMStatusInfo, []error)
	GetVMStatus(vmID []string) ([]VMStatus, []error)

	ListVM() ([]*VMInfo, []error)
	GetVM(vmID []string) ([]VMInfo, []error)
}

Bug: DELETE keypair with keypairname returns `true` even if the keypair with that keypairname does not exist.

  1. HTTP req: GET {{spider_ip}}:{{spider_port}}/keypair/{{spider_keypairId}}?connection_name={{connection_name}}
  2. JSON res:
{
    "message": "InvalidKeyPair.NotFound: The key pair 'mcb-keypair' does not exist\n\tstatus code: 400, request id: 376a433a-b57f-4731-95da-5a9745d97231"
}

=> We can see that the keypair with that keypairname does not exist.


  1. HTTP req: DELETE {{spider_ip}}:{{spider_port}}/keypair/{{spider_keypairId}}?connection_name={{connection_name}}
  2. HTTP res:
    true
    (expected false or failed)

Suggestion: `connection_name` - in query string vs. in JSON body

  • 현재 Spider: {{spider_ip}}:{{spider_port}}/keypair?connection_name={{connection_name}}
    위와 같이, URL 뒤에 query param 으로 명시
  • 현재 Tumblebug: {{tb_ip}}:{{tb_port}}/ns/{{ns_id}}/resources/publicIp
    위와 같이 API Call 할 때, JSON body 에
{
  "connectionName": "{{connection_name}}",
  "cspPublicIpName": "jhseo-test"
}

위와 같이 명시


  • 통일을 시켜야 한다는 것은 아니지만, Spider 에서도 아래 방법으로 connection_name 을 명시받는 것은 어떤지 하여 이슈로 작성해 봅니다.
  • 만약 바꾼다면, Spider 를 이용하는 TB, Dragonfly, Webtool 등도 Spider 변경에 대한 대응이 필요합니다. 이를 고려하면, 바꾸지 않는 것이 나을 수도 있습니다.

[Driver V1.0] 개발 가이드 및 향후 계획

<from https://github.com/cloud-barista/poc-cb-spider/issues/13>

VNet, Subnet, VNic 등 네트워크 관련 자원들에 대한 핸들링은 CSP별로 자원 구성 및 활용 방법의 차이가 있어 전체 CSP 현황 파악 후 정리하고자 함.

<현재 시점 Driver V1.0 개발 가이드 및 향후 계획>

(1) Driver V1.0 개발 가이드(현재 시점)
(a) 현재 자원 인터페이스("필요시 보완")를 통해서 필요 자원 생성/확인/삭제(by XXXHandler)
(b) 생성된 자원들을 이용하여 VM 생성/확인/LifeCycle/삭제(by VMHandler)
(c) 생성된 VM에 SSH 로그인 및 SCP 파일 복사(into VM) 가능 상태 확인(by Person)
(2) Test 프로그램 가이드: 아래와 같이 3종류의 Test 프로그램
(a) Test_Resources.go: 각 자원 생성/확인/삭제
(b) Test_VM.go: VM 생성/확인/LifeCycle/삭제 (기존 Test.go)
(c) Test_Create.go: 각 자원 생성 -> VM 생성, SSH/SCP 시험
(3) <분석 요청>
(a) 기관별 담당 CSP에 대한 네트워크 관련 자원 현황 및 관계성, 운영 방법 분석 및 공유
(b) 양식: PPT 1~3page
(c) 공유: 차기 미팅(ZooM, F2F, 월간회의 등)
(4) ETRI: 분석 결과 기반 인터페이스 재정의 및 배포
(5) 기관: 드라이버 패치/시험

azure-sdk-for-go 최신버전 사용 시 driver build 실패

(카푸치노 공개 행사 이후에 하면 좋을 것 같습니다.)


현재 go.mod

github.com/Azure/azure-sdk-for-go v37.2.0+incompatible

이렇게 되어 있습니다.


azure-sdk-for-go 를 최신버전으로 업데이트 하고
go get -u -v github.com/Azure/azure-sdk-for-go

버전을 확인해 보면 다음과 같습니다.

github.com/Azure/azure-sdk-for-go v42.2.0+incompatible

이 상태에서 driver build 하면 에러가 발생합니다.

펼치기 / 숨기기
============ build azure ... ============
# github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/resources/mgmt/2017-05-10/resources/deploymentoperations.go:120:2: not enough arguments to return
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/resources/mgmt/2017-05-10/resources/deploymentoperations.go:120:15: client.Send undefined (type DeploymentOperationsClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/resources/mgmt/2017-05-10/resources/deploymentoperations.go:213:2: not enough arguments to return
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/resources/mgmt/2017-05-10/resources/deploymentoperations.go:213:15: client.Send undefined (type DeploymentOperationsClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/resources/mgmt/2017-05-10/resources/deployments.go:100:2: not enough arguments to return
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/resources/mgmt/2017-05-10/resources/deployments.go:100:15: client.Send undefined (type DeploymentsClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/resources/mgmt/2017-05-10/resources/deployments.go:190:2: not enough arguments to return
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/resources/mgmt/2017-05-10/resources/deployments.go:190:15: client.Send undefined (type DeploymentsClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/resources/mgmt/2017-05-10/resources/deployments.go:278:2: not enough arguments to return
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/resources/mgmt/2017-05-10/resources/deployments.go:278:15: client.Send undefined (type DeploymentsClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/resources/mgmt/2017-05-10/resources/deployments.go:278:2: too many errors
# github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-06-01/compute
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/compute/mgmt/2018-06-01/compute/availabilitysets.go:108:2: not enough arguments to return
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/compute/mgmt/2018-06-01/compute/availabilitysets.go:108:15: client.Send undefined (type AvailabilitySetsClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/compute/mgmt/2018-06-01/compute/availabilitysets.go:184:2: not enough arguments to return
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/compute/mgmt/2018-06-01/compute/availabilitysets.go:184:15: client.Send undefined (type AvailabilitySetsClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/compute/mgmt/2018-06-01/compute/availabilitysets.go:259:2: not enough arguments to return
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/compute/mgmt/2018-06-01/compute/availabilitysets.go:259:15: client.Send undefined (type AvailabilitySetsClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/compute/mgmt/2018-06-01/compute/availabilitysets.go:334:2: not enough arguments to return
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/compute/mgmt/2018-06-01/compute/availabilitysets.go:334:15: client.Send undefined (type AvailabilitySetsClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/compute/mgmt/2018-06-01/compute/availabilitysets.go:448:2: not enough arguments to return
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/compute/mgmt/2018-06-01/compute/availabilitysets.go:448:15: client.Send undefined (type AvailabilitySetsClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/compute/mgmt/2018-06-01/compute/availabilitysets.go:448:2: too many errors
# github.com/Azure/azure-sdk-for-go/services/network/mgmt/2018-04-01/network
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/network/mgmt/2018-04-01/network/applicationgateways.go:105:20: client.Send undefined (type ApplicationGatewaysClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/network/mgmt/2018-04-01/network/applicationgateways.go:206:20: client.Send undefined (type ApplicationGatewaysClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/network/mgmt/2018-04-01/network/applicationgateways.go:282:20: client.Send undefined (type ApplicationGatewaysClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/network/mgmt/2018-04-01/network/applicationgateways.go:362:2: not enough arguments to return
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/network/mgmt/2018-04-01/network/applicationgateways.go:362:15: client.Send undefined (type ApplicationGatewaysClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/network/mgmt/2018-04-01/network/applicationgateways.go:436:2: not enough arguments to return
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/network/mgmt/2018-04-01/network/applicationgateways.go:436:15: client.Send undefined (type ApplicationGatewaysClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/network/mgmt/2018-04-01/network/applicationgateways.go:511:2: not enough arguments to return
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/network/mgmt/2018-04-01/network/applicationgateways.go:511:15: client.Send undefined (type ApplicationGatewaysClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/network/mgmt/2018-04-01/network/applicationgateways.go:620:15: client.Send undefined (type ApplicationGatewaysClient has no field or method Send)
/root/go/pkg/mod/github.com/!azure/[email protected]+incompatible/services/network/mgmt/2018-04-01/network/applicationgateways.go:620:15: too many errors
chmod: cannot access 'azure-driver-v1.0.so': No such file or directory
mv: cannot stat './azure-driver-v1.0.so': No such file or directory

장기적인 관점에서 봤을 때
azure-sdk-for-go v42.2.0 과 그 이후 버전에 대해서도 Azure 드라이버 빌드가 잘 되었으면 좋겠습니다.


FYI
azure-sdk-for-go v37.2.0 으로 받는 방법:
go get -u -v github.com/Azure/[email protected]

cb-spider 디렉토리 안에서 위의 명령을 내리면
(+ export GO111MODULE=on 상태여야 할 수도 있음)

~/go/src/github.com/Azure/azure-sdk-for-go

go.mod 파일의 해당 라인도 다음과 같이 수정됩니다.

github.com/Azure/azure-sdk-for-go v37.2.0+incompatible

(FYI: go.mod 파일에 기재된 "패키지들의 특정 버전들" 은 ~/go/pkg/ 에 저장됩니다.)

Bug: Azure driver does not handle `FromPort` and `ToPort` properly.

Reproducing steps:

  1. POST securitygroup
{
    "connectionName": "{{connection_name}}",
    "cspSecurityGroupName": "jhseo-test",
    "firewallRules": [
        {
            "FromPort": "0",
            "ToPort": "65535",
            "IPProtocol": "*",
            "Direction": "inbound"
        }
    ]
}
  1. Expected response:
{
    "Id": "/subscriptions/f1548292-2be3-4acd-84a4-6df079160846/resourceGroups/jhseo-test-eastasia/providers/Microsoft.Network/networkSecurityGroups/jhseo-test",
    "Name": "jhseo-test",
    "Direction": "",
    "SecurityRules": [
        {
            "FromPort": "0",
            "ToPort": "65535",
            "IPProtocol": "*",
            "Direction": "Inbound"
        }
    ],
    "KeyValueList": [
        {
            "Key": "ResourceGroup",
            "Value": "jhseo-test-eastasia"
        }
    ]
}
  1. What actually got:
{
    "Id": "/subscriptions/f1548292-2be3-4acd-84a4-6df079160846/resourceGroups/jhseo-test-eastasia/providers/Microsoft.Network/networkSecurityGroups/jhseo-test",
    "Name": "jhseo-test",
    "Direction": "",
    "SecurityRules": [
        {
            "FromPort": "0-65535",
            "ToPort": "*",
            "IPProtocol": "*",
            "Direction": "Inbound"
        }
    ],
    "KeyValueList": [
        {
            "Key": "ResourceGroup",
            "Value": "jhseo-test-eastasia"
        }
    ]
}

[Alibaba Driver] build error

@zephy-mzc @jazmandorf @dev4unet

Alibaba 클라우드 환경이 준비되어 시험하고자 합니다.
Driver build 시 다음과 같은 오류 메시지가 발생합니다.
버전 차이 문제 같기도 한데 확인 부탁드립니다.

  • sdk 설치 방법
    $go get -u github.com/aliyun/alibaba-cloud-sdk-go

  • driver compile message

resources/ImageHandler.go:159:38: undefined: ecs.Image
resources/VMHandler.go:312:44: undefined: ecs.Instance
resources/VMSpecHandler.go:22:56: undefined: ecs.InstanceType

[Tumblebug 요청] Spec 정보 제공 기능 추가

VM 최적 배치 판단 등을 위한 Spec(or Flavor) 정보 제공 필요.

<개략일정>
(1) Common Driver Interface 추가 - 1/09(목)
(2) 각 Driver 추가 개발/시험
(3) REST Interface 추가 개발/시험
(4) 배포

[AWS: NameID 운영 관련 이슈]

<필수 필드가 아닌 Name Tag를 Key 기반으로 구현하면서 결정해야할 사항들> by @dev4unet

CSP의 콘솔 사용 시 Name Tag는 필수가 아닌 선택 사항이기 때문에 Name Tag가 없거나 중복되는 경우가 존재함.
-- 목록 조회 시 Name Tag가 없는 Object(예:VM)의 정보를 버려야 할지 에러로 처리하고 중단해야 할지 결정 필요
-- Object(예:VM) 생성 시 기존에 사용된 Name Tag가 존재하면 중복 방지를 위해 생성 불가
---> [참고] VM 삭제 시 실시간으로 삭제되지 않기 때문에 Terminated 상태가 완전히 사라지기전까지는 생성 불가
-- CSP의 콘솔을 통해 생성된 Object 중 동일한 이름의 Name Tag가 2개 이상 존재할 경우 CB에서는 조회하지 않고 에러 처리함.
---> VMHandler에만 2개 이상의 Name에 대한 체크가 적용되어 있음.

Suggestion: Add `connection_name` emptiness check logic

  1. HTTP Request
    POST {{spider_ip}}:{{spider_port}}/vnetwork?connection_name=
    (POST with no connection_name)

  2. Expected:

{
    "message": "\"\": connection_name should be specified."
}
  1. What actually got:
{
    "message": "\"\": driver library file can't nil or empty!!"
}

[Remodeling] SecurityGroup 개정 인터페이스 반영

(참고) 리모델링 계획(안): #131

  • 리모델링 중 build 오류 등 가능함, 동작 버전은 다음 Tag 버전 참고
<Tagging: v0.1.2> https://github.com/cloud-barista/cb-spider/releases/tag/v0.1.2
$ git clone --branch v0.1.2 https://github.com/cloud-barista/cb-spider.git

[Info] golang version: 1.12.4 recommended

[Go version 관련]
go 1.14 에서는

  • OpenStack 드라이버 빌드 실패
  • "message": "plugin.Open(\"/root/go/src/github.com/cloud-barista/cb-spider/cloud-driver-libs/aws-driver-v1.0\"): plugin was built with a different version of package github.com/cloud-barista/cb-spider/cloud-control-manager/cloud-driver/interfaces/resources"

등의 에러가 납니다.


rm -rf /usr/local/go
하고
go 1.12.4 설치하니
잘 됩니다.

Info: rackspace/gophercloud 관련

현재 go.mod 에는 이렇게 되어 있습니다.

github.com/rackspace/gophercloud v1.0.1-0.20161013120614-60916741c8ec

go.mod 파일을 업데이트 하기 위해
cb-spider 디렉토리에서 go mod tidy 명령을 내리면
다음과 같이 변경됩니다.

github.com/rackspace/gophercloud v1.0.0

https://github.com/rackspace/gophercloud 에 가서 확인해 보면
master 브랜치에는
이 이슈를 작성하는 현재 2,156 개의 커밋이 있는데
v1.0.0 태그는 1,144 번째 커밋에 찍혔습니다. 너무 오래되었습니다.


해결책:
https://github.com/rackspace/gophercloud/commits/master 에서
travis-ci 테스트를 패스한 가장 마지막 commit 의 commit ID 를 복사하고
(예: 60916741c8ec228e035f8229aee85452840e2c0d)

cb-spider 디렉토리에서 다음의 명령을 내립니다.
go get -u -v github.com/rackspace/gophercloud@60916741c8ec228e035f8229aee85452840e2c0d


다시 go.mod 파일을 확인해 보면 다음과 같습니다.

github.com/rackspace/gophercloud v1.0.1-0.20161013120614-60916741c8ec

Suggestion: alignment about VM status types with CB-Tumblebug

Suggestion: alignment about VM status types with CB-Tumblebug

CB-Tumblebug defined the following VM status types,
Final status category :
 Running
 Suspended
 Failed
 Terminated

Transitional status category :
 Creating
 Suspending
 Resuming
 Rebooting
 Terminating

CB-Spider provides the following status types which are not aligned with CB-Tumblebug.

type StatusInfo struct {
        Status string 
// PENDING | RUNNING | SUSPENDING | SUSPENDED | REBOOTING | TERMINATING | TERMINATED

There are missing status types for VM. (Failed)
And "PENDING" status can be changed to "Creating" status

AWS Region 생성시 Region에 대한 Key 명칭 대소문자 구분 이슈

Bug 리포트 입니다.

Region 생성시 Region에 대한 Key Value를 입력하는데,
AWS 의 경우, Key를 소문자 "region"으로 했을 때, AWS의 Endpoint를 못찾는 문제가 발생합니다.
테스트해보니, "Region" 으로 하면 문제 없습니다.
(@powerkimhub 해당 사항을 공시하시거나, 대소문자 구분을 하지 않도록 수정하는 것이 좋을 것 같습니다.)

[버그 상황 예시]

curl -sX POST http://$RESTSERVER:1024/spider/region -H 'Content-Type: application/json' -d \
    '{
        "ProviderName" : 
        "KeyValueInfoList" : [
            {
                "Key" : "region"
                "Value" : "us-east-1"
            }
        ],
        "RegionName" : 
    }' | json_pp

[에러메시지: VPC 생성시]

## 1. VPC: Create

{
   "message" : "{\"message\":\"InvalidEndpointURL: invalid endpoint uri\\ncaused by: parse https://ec2.Not set.amazonaws.com/: invalid character \\\" \\\" in host name\"}\n"
}

[Remodeling] 드라이버 공통 인터페이스 및 자원 제어 방법 개선 필요

Americano 버전 개발 및 활용시 제기된 이슈 개선 필요

<주요 이슈>

  • 드라이버 인터페이스 보완 필요: Image, Spec(마무리중), 등등
  • 드라이버 개발 복잡성: 자원 NameID 처리, VM 상태 정보 제공, VNet(VPC, Subnet) 처리 등
  • 묶음 자원 제어 방법 혼잡/불안: one API 내부에서 여러 자원 생성 CSP-API Call을 통한 처리
    => Lock&Transaction 처리 유발 등
  • API 응답 성능 개선 위한 Async Call 고려 등

<개략 일정>

  • 2월말: 이슈 분석 및 구조/설계 변경안 마련 => 커뮤니티 공유(off-line => on-line)
  • 3월초: 변경안 검토 => 검토 의견 반영 => 대안 확정
  • 4월중: 개발 및 시험 완료

[Remodeling] 드라이버 통합ID 반영 필요

(ref) 리모델링 계획(안): #131

  • 작업 전 Tagging 추가
<Tagging: v0.1.2> https://github.com/cloud-barista/cb-spider/releases/tag/v0.1.2
$ git clone --branch v0.1.2 https://github.com/cloud-barista/cb-spider.git

<개발 가이드> 통합ID 반영을 위한 인터페이스 변경 개발 가이드

  • 통합ID 반영 작업만 진행
  • NameID 중복 체크 및 동시성 문제 등은 사용자(Tumblebug 등)와 드라이버 사이에서 일괄 처리 예정
    • 개발 순서: AWS/Azure => GCP/OpenStack => Alibaba/Cloudit

<세부 가이드>

  • 통합 ID(IID:Integrated-ID) 구조
    (참고:cb-spider/cloud-control-manager/cloud-driver/interfaces/resources/IId.go)
type IID struct {
        NameId     string // NameID by user
        SystemId   string // SystemID by CloudOS
}
  • <수정작업> XXXHandler 내의 다음과 같은 ID들을 통합 ID로 수정
    • Id, name 및 NameId 등 => IID // IID = {NameId, SystemId}
  • 수정된 Driver Interface의 사용 예시
iId = {“userVM001”, “”}     // 사용자가 부여하는 VM의 NameID 설정
imageIId := IID{“aws-parallelcluster-2.0.0-ubuntu-1404-lts-hvm-201811090055”, “ami-033d26c5429779cb9”}  // ImageHandler로부터 받은 IID 또는 이와 동일하게 IID 구성

vmReqInfo := VMReqInfo{
           IId: iId, 
           ImageIID: imageIId,
           VMSpecName: “t2.micro”, // 유일한 Name을 그대로 사용
           … 
}

vmInfo, err := StartVM(vmReqInfo)

반환된 VMInfo 결과내 IID 구성은 다음과 같을 수 있습니다. 
(1) NameID를 제공하지 않는 CSP 경우
vmInfo.IId => {“userVM001”, “i-002db4b81d1fcbb6a”} // 드라이버 속에서는 VM 생성 후 얻는 System ID를 설정해서 반납

(2) NameID를 제공하는 CSP 경우 
vmInfo.IId => {“userVM001”, “userVM001”} // 드라이버 속에서는 VM 생성 성공 후 동일한 NameID를 SystemId로 설정해서 반납

Issue: AWS vnetwork 생성 시, 1) 사용자가 지정한 이름, 2) AWS에 기록되는 이름, 3) 사용자에게 리턴되는 이름이 다름

Request:
POST {{spider_ip}}:{{spider_port}}/spider/vnetwork

{
    "ConnectionName": "aws-us-east-1-config",
    "ReqInfo": {
    	"Name": "jhseo-test"
    }
}

AWS Console:
vnet1
vnet2


Response:

{
    "Id": "subnet-01b0dadd2ab683d79",
    "Name": "jhseo-test",
    "AddressPrefix": "192.168.0.0/16",
    "Status": "pending",
    "KeyValueList": [
        {
            "Key": "VpcId",
            "Value": "vpc-017466936a5667f1c"
        },
        {
            "Key": "MapPublicIpOnLaunch",
            "Value": "false"
        },
        {
            "Key": "AvailableIpAddressCount",
            "Value": "65531"
        },
        {
            "Key": "AvailabilityZone",
            "Value": "us-east-1e"
        }
    ]
}

FYI:
이를 GET, DELETE 하려면
{{spider_ip}}:{{spider_port}}/spider/vnetwork/CB-VNet 으로 하면 안 되고
{{spider_ip}}:{{spider_port}}/spider/vnetwork/jhseo-test 로 해야 합니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.