-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
It seems that external structs are not recognized when executing swag init
.
#33
Comments
I tried the type alias below but encountered the same error. Type alias // Type Aliases to recognize external structs
type Infra = infra.Infra
type RecommendInfraRequest struct {
Infra
} |
Until a repository that manages only models is set up, the Then, we could replace the script with |
@niconicodex 안녕하세요. 이후 CM-Honeybee에서 Swagger documenation을 적용하실 때에도 아래 이슈가 동일하게 발생할 것 같아 공유를 드립니다. 외부 저장소 package 를 임포트한 후, 해당 package의 struct를 사용하실 경우에 발생하는 이슈입니다. Go 에서는 이슈가 되지 않으나, 2023/12/13 17:46:43 Error parsing type definition 'network.LibvirtDomain': interfaces: cannot find type definition: libvirtxml.DomainInterface
2023/12/13 17:46:43 Error parsing type definition 'network.LibvirtNet': domains: LibvirtDomain: interfaces: cannot find type definition: libvirtxml.DomainInterface
2023/12/13 17:46:43 Error parsing type definition 'network.VirtualNetwork': libvirt_net: LibvirtNet: domains: LibvirtDomain: interfaces: cannot find type definition: libvirtxml.DomainInterface
2023/12/13 17:46:43 Error parsing type definition 'network.Network': virtual_network: VirtualNetwork: libvirt_net: LibvirtNet: domains: LibvirtDomain: interfaces: cannot find type definition: libvirtxml.DomainInterface
2023/12/13 17:46:43 Error parsing type definition 'infra.Infra': network: network.Network: virtual_network: VirtualNetwork: libvirt_net: LibvirtNet: domains: LibvirtDomain: interfaces: cannot find type definition: libvirtxml.DomainInterface
2023/12/13 17:46:43 Error parsing type definition 'controller.RecommendInfraRequest': : infra.Infra: network: network.Network: virtual_network: VirtualNetwork: libvirt_net: LibvirtNet: domains: LibvirtDomain: interfaces: cannot find type definition: libvirtxml.DomainInterface |
사전 수행사항:: 온프레미스 모델 동기화 스크립트(get-onprem-models.sh) 사용하여 cm-honeybee의 모델 파일들을 cm-beetle로 동기화 이슈 1:
: (원인) 아래와 같이 모델 pkg를 import 및 alias 적용 한 경우 이를 참조하지 못하기 때문 import (
onpremmodel "github.com/cloud-barista/cm-beetle/pkg/api/rest/model/onprem/infra"
)
type RecommendInfraRequest struct {
onpremmodel.Infra
}
type RecommendInfraResponse struct {
cloudmodel.TbMcisDynamicReq
}
// RecommendInfra godoc
// @Summary Recommend an appropriate infrastructure for cloud migration
// @Description It recommends a cloud infrastructure most similar to the input. Infrastructure includes network, storage, compute, and so on.
// @Tags [Recommendation] Infrastructure
// @Accept json
// @Produce json
// @Param UserInfrastructure body RecommendInfraRequest true "Specify network, disk, compute, security group, virtual machine, etc."
// @Success 200 {object} RecommendInfraResponse "Successfully recommended an appropriate infrastructure for cloud migration"
// @Failure 404 {object} common.SimpleMsg
// @Failure 500 {object} common.SimpleMsg
// @Router /recommendation/infra [post]
func RecommendInfra(c echo.Context) error {
...
} 📌 의견: : API로 제공되는 모델에 대해서는 pkg import시 alias 적용이 불가할 것으로 판단됨 이슈 2:
: (원인) 해당 스트럭트가 동기화 되지 않았기 때문 package infra
import (
"github.com/cloud-barista/cm-honeybee/agent/gpu/drm"
"github.com/cloud-barista/cm-honeybee/agent/gpu/nvidia"
)
type GPU struct {
NVIDIA []nvidia.NVIDIA `json:"nvidia"`
DRM []drm.DRM `json:"drm"`
} 📌 의견: : GPU 관련 모델도 model/onprem 또는 하위 경로 상에 위치해야할 것으로 보임 |
해당 커밋에 의해 말씀하신 문제 수정되었습니다. 감사합니다. |
[개요]
[방안]
[세부]
[기타]
|
외부 패키지 활용 및 API docs 생성 방안을 공유해주셔서 감사드립니다. 먼저, 소스 컴퓨팅 인프라 형상 정보 메트릭, 소스 모델(온프레미스 모델), 목표 모델(클라우드 모델), API 요청/응답 바디 구조체 등에 실 적용 및 테스트를 진행하고요. 이후에 플랫폼 전체에 확대 적용하는 것으로 추진해보겠습니다. (행사 이후 추진) 공유해주신 아래 내용에 대해 한가지 질문이 있습니다. 기존에 설정되어 있는
|
|
네 알겠습니다. 설명 감사드립니다. |
CM-Beetle에서 아래 둘을 import 하는 방식으로 테스트를 진행해 봤습니다.
결론부터 공유드립니다.
이후는 테스트 결과입니다. 살펴보시면 될 것 같습니다. 사전에, CM-Beetle에서는 'Swagger general API info'를 // @title CM-Beetle REST API
// @version latest
// @description CM-Beetle REST API
// @contact.name API Support
// @contact.url http://cloud-barista.github.io
// @contact.email [email protected]
// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
// @BasePath /beetle
// @securityDefinitions.basic BasicAuth 이를 바탕으로 몇 가지 케이스를 통해 현황을 공유드립니다.
Case 1: 외부 pkg import 방식으로 수정, : 관련 디렉토리 및 파일 구조 .
├── cmd
│ └── cm-beetle
│ └── main.go
├── go.mod
├── go.sum
├── go.work
├── go.work.sum
└── pkg
└── api
└── rest
├── common
├── controller
├── middlewares
├── model
├── route
└── server.go : ~/go/bin/swag i \
--parseDependency \
--generalInfo ./pkg/api/rest/server.go \
--dir ./ \
--output ./api : 결과 - import 된 패키지 포함하여 API 문서 생성 성공, CM-Beetle 내부의 패키지에 대해서는
:결과 - UI 상에서 외부 패키지는 일반적으로 출력됙, 내부 패키지가 곤란하게 출력됨 Case 2: : 관련 디렉토리 및 파일 구조 : ~/go/bin/swag i \
--parseDependency \
--generalInfo ./cmd/cm-beetle/main.go \
--dir ./ \
--output ./api : 결과 - Case 1과 동일 (생략) Case 3: .
├── cmd
│ └── cm-beetle
├── main.go
├── go.mod
├── go.sum
├── go.work
├── go.work.sum
└── pkg
└── api
└── rest
├── common
├── controller
├── middlewares
├── model
├── route
└── server.go : ~/go/bin/swag i \
--parseDependency \
--generalInfo ./main.go \
--dir ./ \
--output ./api : 결과 - 일부 개선됨, CM-Beetle 내부의 패키지에 대해서는
:
: 참고 - 재정의/명시 type SimpleMessage struct {
common.SimpleMsg
} |
@innodreamer CM-Damselfly 측면에서 한번 살펴봐 주시면 좋을 것 같습니다. |
최근 pkg들을 정리한 이후, 내부 패키지 및 구조체의 명칭에 증상 참고: 현황: CB-Tumblebug 및 cm-model 저장소의 pkg 를 import해서 활용 중이고, 결과가 아래와 같습니다.
|
@powerkimhub @seokho-son @innodreamer @ish-hcc 관련 사항이 충분한 테스트 되었고, 모델(Go struct) import 및 swag init 방법도 자리를 잡아가고 있어 Close 합니다. |
It seems that external structs are not recognized when executing
swag init
.What I've done
Click to see full source code
swag init
I encountered the below message.
Click to see full message
The text was updated successfully, but these errors were encountered: