Skip to content

Conversation

@yunkon-kim
Copy link
Member

  • Align Data field with REST API standards
  • Add Page struct for pagination support
  • Provide helper functions for responses
  • Create API development guide
  • Mark legacy Response as deprecated
  • Add .dockerignore

- Align Data field with REST API standards
- Add Page struct for pagination support
- Provide helper functions for responses
- Create API development guide
- Mark legacy Response as deprecated
- Add `.dockerignore`
@cb-github-robot
Copy link
Member

API Change Report

The following API changes have been detected in this Pull Request compared to the base branch.

DeepDiffGo Report
Comparing:
  - Old: prev_spec.yaml
  - New: api/swagger.yaml
=================
[*] GET /migration/ns/{nsId}/mci
    * Response (404, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
[*] POST /migration/ns/{nsId}/mci
    * Response (404, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
[*] DELETE /migration/ns/{nsId}/mci/{mciId}
    * Response (200, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
    * Response (404, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
[*] GET /migration/ns/{nsId}/mci/{mciId}
    * Response (404, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
[*] POST /migration/ns/{nsId}/mciWithDefaults
    * Response (404, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
[*] POST /recommendation/vmInfra
    * Response (200, body, model.ApiResponse-cloudmodel_RecommendedVmInfra, object): Structure changed (From: model.ApiResponse-cloudmodel_RecommendedVmInfra, To: model.ApiResponse-array_cloudmodel_RecommendedVmInfra)
    - Response (200, body, model.ApiResponse-cloudmodel_RecommendedVmInfra, object) .item: Property removed
    - Response (200, body, model.ApiResponse-cloudmodel_RecommendedVmInfra, object) .items: Property removed
    + Response (200, body, model.ApiResponse-array_cloudmodel_RecommendedVmInfra, object) .data: Property added
    - Response (400, body, model.ApiResponse-any, object) .item: Property removed
    - Response (400, body, model.ApiResponse-any, object) .items: Property removed
    + Response (400, body, model.ApiResponse-any, object) .data: Property added
    - Response (500, body, model.ApiResponse-any, object) .item: Property removed
    - Response (500, body, model.ApiResponse-any, object) .items: Property removed
    + Response (500, body, model.ApiResponse-any, object) .data: Property added
[*] POST /report/migration/ns/{nsId}/mci/{mciId}
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
    * Response (400, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
[*] POST /summary/source
    * Response (400, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
[*] GET /summary/target/ns/{nsId}/mci/{mciId}
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
    * Response (400, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)
    * Response (404, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: github_com_cloud-barista_cm-beetle_pkg_api_rest_model.Response)

- Exclude deepdiffgo and transx/examples from docs
- Use clean struct names instead of full package paths
- Improve API documentation readability
@cb-github-robot
Copy link
Member

API Change Report

The following API changes have been detected in this Pull Request compared to the base branch.

DeepDiffGo Report
Comparing:
  - Old: prev_spec.yaml
  - New: api/swagger.yaml
=================
[*] GET /httpVersion
    * Response (200, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (404, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] POST /migration/data
    * Request (body, reqBody, transx.DataMigrationModel, object): Structure changed (From: transx.DataMigrationModel, To: DataMigrationModel)
    * Response (200, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (400, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (404, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] GET /migration/middleware/objectStorage
    * Response (400, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (200, body, tbclient.ListAllMyBucketsResult, object): Structure changed (From: tbclient.ListAllMyBucketsResult, To: ListAllMyBucketsResult)
    * Response (200, body, tbclient.ListAllMyBucketsResult, object) .owner: Structure changed (From: tbclient.Owner, To: Owner)
    * Response (200, body, tbclient.ListAllMyBucketsResult, object) .buckets: Structure changed (From: tbclient.Buckets, To: Buckets)
    * Response (200, body, tbclient.ListAllMyBucketsResult, object) .buckets.bucket[]: Structure changed (From: tbclient.Bucket, To: Bucket)
[*] POST /migration/middleware/objectStorage
    * Request (body, request, controller.MigrateObjectStorageRequest, object): Structure changed (From: controller.MigrateObjectStorageRequest, To: MigrateObjectStorageRequest)
    * Request (body, request, controller.MigrateObjectStorageRequest, object) .targetCloud: Structure changed (From: cloudmodel.CloudProperty, To: CloudProperty)
    * Request (body, request, controller.MigrateObjectStorageRequest, object) .targetObjectStorages[]: Structure changed (From: controller.TargetObjectStorageProperty, To: TargetObjectStorageProperty)
    * Request (body, request, controller.MigrateObjectStorageRequest, object) .targetObjectStorages[].corsRules[]: Structure changed (From: controller.CORSRule, To: CORSRule)
    * Response (400, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] DELETE /migration/middleware/objectStorage/{objectStorageName}
    * Response (400, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (404, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] GET /migration/middleware/objectStorage/{objectStorageName}
    * Response (200, body, tbclient.ListBucketResult, object): Structure changed (From: tbclient.ListBucketResult, To: ListBucketResult)
    * Response (400, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (404, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] HEAD /migration/middleware/objectStorage/{objectStorageName}
    * Response (400, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (404, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] GET /migration/ns/{nsId}/mci
    * Response (200, body, cloudmodel.IdList, object): Structure changed (From: cloudmodel.IdList, To: IdList)
    * Response (404, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
[*] POST /migration/ns/{nsId}/mci
    * Request (body, mciInfo, controller.MigrateInfraRequest, object): Structure changed (From: controller.MigrateInfraRequest, To: MigrateInfraRequest)
    * Request (body, mciInfo, controller.MigrateInfraRequest, object) .targetSshKey: Structure changed (From: cloudmodel.SshKeyReq, To: SshKeyReq)
    * Request (body, mciInfo, controller.MigrateInfraRequest, object) .targetVmSpecList[]: Structure changed (From: cloudmodel.SpecInfo, To: SpecInfo)
    * Request (body, mciInfo, controller.MigrateInfraRequest, object) .targetVmSpecList[].details[]: Structure changed (From: cloudmodel.KeyValue, To: KeyValue)
    * Request (body, mciInfo, controller.MigrateInfraRequest, object) .targetSecurityGroupList[]: Structure changed (From: cloudmodel.SecurityGroupReq, To: SecurityGroupReq)
    * Request (body, mciInfo, controller.MigrateInfraRequest, object) .targetSecurityGroupList[].firewallRules[]: Structure changed (From: cloudmodel.FirewallRuleReq, To: FirewallRuleReq)
    * Request (body, mciInfo, controller.MigrateInfraRequest, object) .targetVmInfra: Structure changed (From: cloudmodel.MciReq, To: MciReq)
    * Request (body, mciInfo, controller.MigrateInfraRequest, object) .targetVmInfra.subGroups[]: Structure changed (From: cloudmodel.CreateSubGroupReq, To: CreateSubGroupReq)
    * Request (body, mciInfo, controller.MigrateInfraRequest, object) .targetVmOsImageList[]: Structure changed (From: cloudmodel.ImageInfo, To: ImageInfo)
    * Request (body, mciInfo, controller.MigrateInfraRequest, object) .targetVmOsImageList[].details[]: Structure changed (From: cloudmodel.KeyValue, To: KeyValue)
    * Request (body, mciInfo, controller.MigrateInfraRequest, object) .targetVNet: Structure changed (From: cloudmodel.VNetReq, To: VNetReq)
    * Request (body, mciInfo, controller.MigrateInfraRequest, object) .targetVNet.subnetInfoList[]: Structure changed (From: cloudmodel.SubnetReq, To: SubnetReq)
    * Request (body, mciInfo, controller.MigrateInfraRequest, object) .targetCloud: Structure changed (From: cloudmodel.CloudProperty, To: CloudProperty)
    * Response (200, body, controller.MigrateInfraResponse, object): Structure changed (From: controller.MigrateInfraResponse, To: MigrateInfraResponse)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[]: Structure changed (From: cloudmodel.VmInfo, To: VmInfo)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].connectionConfig: Structure changed (From: cloudmodel.ConnConfig, To: ConnConfig)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].connectionConfig.regionDetail: Structure changed (From: cloudmodel.RegionDetail, To: RegionDetail)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].connectionConfig.regionDetail.location: Structure changed (From: cloudmodel.Location, To: Location)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].connectionConfig.regionZoneInfo: Structure changed (From: cloudmodel.RegionZoneInfo, To: RegionZoneInfo)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].addtionalDetails[]: Structure changed (From: cloudmodel.KeyValue, To: KeyValue)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].commandStatus[]: Structure changed (From: cloudmodel.CommandStatusInfo, To: CommandStatusInfo)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].location: Structure changed (From: cloudmodel.Location, To: Location)
    * Response (200, body, controller.MigrateInfraResponse, object) .statusCount: Structure changed (From: cloudmodel.StatusCountInfo, To: StatusCountInfo)
    * Response (404, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
[*] DELETE /migration/ns/{nsId}/mci/{mciId}
    * Response (200, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
    * Response (404, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
[*] GET /migration/ns/{nsId}/mci/{mciId}
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
    * Response (200, body, controller.MigrateInfraResponse, object): Structure changed (From: controller.MigrateInfraResponse, To: MigrateInfraResponse)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[]: Structure changed (From: cloudmodel.VmInfo, To: VmInfo)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].connectionConfig: Structure changed (From: cloudmodel.ConnConfig, To: ConnConfig)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].connectionConfig.regionDetail: Structure changed (From: cloudmodel.RegionDetail, To: RegionDetail)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].connectionConfig.regionDetail.location: Structure changed (From: cloudmodel.Location, To: Location)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].connectionConfig.regionZoneInfo: Structure changed (From: cloudmodel.RegionZoneInfo, To: RegionZoneInfo)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].location: Structure changed (From: cloudmodel.Location, To: Location)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].addtionalDetails[]: Structure changed (From: cloudmodel.KeyValue, To: KeyValue)
    * Response (200, body, controller.MigrateInfraResponse, object) .vm[].commandStatus[]: Structure changed (From: cloudmodel.CommandStatusInfo, To: CommandStatusInfo)
    * Response (200, body, controller.MigrateInfraResponse, object) .statusCount: Structure changed (From: cloudmodel.StatusCountInfo, To: StatusCountInfo)
    * Response (404, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
[*] POST /migration/ns/{nsId}/mciWithDefaults
    * Request (body, mciInfo, controller.MigrateInfraWithDefaultsRequest, object): Structure changed (From: controller.MigrateInfraWithDefaultsRequest, To: MigrateInfraWithDefaultsRequest)
    * Request (body, mciInfo, controller.MigrateInfraWithDefaultsRequest, object) .subGroups[]: Structure changed (From: cloudmodel.CreateSubGroupDynamicReq, To: CreateSubGroupDynamicReq)
    * Response (200, body, controller.MigrateInfraWithDefaultsResponse, object): Structure changed (From: controller.MigrateInfraWithDefaultsResponse, To: MigrateInfraWithDefaultsResponse)
    * Response (200, body, controller.MigrateInfraWithDefaultsResponse, object) .vm[]: Structure changed (From: cloudmodel.VmInfo, To: VmInfo)
    * Response (200, body, controller.MigrateInfraWithDefaultsResponse, object) .vm[].commandStatus[]: Structure changed (From: cloudmodel.CommandStatusInfo, To: CommandStatusInfo)
    * Response (200, body, controller.MigrateInfraWithDefaultsResponse, object) .vm[].location: Structure changed (From: cloudmodel.Location, To: Location)
    * Response (200, body, controller.MigrateInfraWithDefaultsResponse, object) .vm[].connectionConfig: Structure changed (From: cloudmodel.ConnConfig, To: ConnConfig)
    * Response (200, body, controller.MigrateInfraWithDefaultsResponse, object) .vm[].connectionConfig.regionDetail: Structure changed (From: cloudmodel.RegionDetail, To: RegionDetail)
    * Response (200, body, controller.MigrateInfraWithDefaultsResponse, object) .vm[].connectionConfig.regionDetail.location: Structure changed (From: cloudmodel.Location, To: Location)
    * Response (200, body, controller.MigrateInfraWithDefaultsResponse, object) .vm[].connectionConfig.regionZoneInfo: Structure changed (From: cloudmodel.RegionZoneInfo, To: RegionZoneInfo)
    * Response (200, body, controller.MigrateInfraWithDefaultsResponse, object) .vm[].addtionalDetails[]: Structure changed (From: cloudmodel.KeyValue, To: KeyValue)
    * Response (200, body, controller.MigrateInfraWithDefaultsResponse, object) .statusCount: Structure changed (From: cloudmodel.StatusCountInfo, To: StatusCountInfo)
    * Response (404, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
[*] DELETE /migration/ns/{nsId}/resources/securityGroup
    * Response (200, body, model.IdList, object): Structure changed (From: model.IdList, To: IdList)
    - Response (200, body, model.IdList, object) .output: Property removed
    + Response (200, body, IdList, object) .idList: Property added
    * Response (404, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
[*] GET /migration/ns/{nsId}/resources/securityGroup
    * Response (404, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (500, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
[*] POST /migration/ns/{nsId}/resources/securityGroup
    * Request (body, securityGroupReq, model.SecurityGroupReq, object): Structure changed (From: model.SecurityGroupReq, To: SecurityGroupReq)
    * Request (body, securityGroupReq, model.SecurityGroupReq, object) .firewallRules[]: Structure changed (From: model.FirewallRuleReq, To: FirewallRuleReq)
    * Response (200, body, model.SecurityGroupInfo, object): Structure changed (From: model.SecurityGroupInfo, To: SecurityGroupInfo)
    * Response (200, body, model.SecurityGroupInfo, object) .connectionConfig: Structure changed (From: model.ConnConfig, To: ConnConfig)
    * Response (200, body, model.SecurityGroupInfo, object) .connectionConfig.regionDetail: Structure changed (From: model.RegionDetail, To: RegionDetail)
    * Response (200, body, model.SecurityGroupInfo, object) .connectionConfig.regionDetail.location: Structure changed (From: model.Location, To: Location)
    * Response (200, body, model.SecurityGroupInfo, object) .connectionConfig.regionZoneInfo: Structure changed (From: model.RegionZoneInfo, To: RegionZoneInfo)
    * Response (200, body, model.SecurityGroupInfo, object) .keyValueList[]: Structure changed (From: model.KeyValue, To: KeyValue)
    * Response (200, body, model.SecurityGroupInfo, object) .firewallRules[]: Structure changed (From: model.FirewallRuleInfo, To: FirewallRuleInfo)
    * Response (404, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (500, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
[*] DELETE /migration/ns/{nsId}/resources/securityGroup/{sgId}
    * Response (200, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (404, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (500, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
[*] GET /migration/ns/{nsId}/resources/securityGroup/{sgId}
    * Response (500, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (200, body, model.SecurityGroupInfo, object): Structure changed (From: model.SecurityGroupInfo, To: SecurityGroupInfo)
    * Response (200, body, model.SecurityGroupInfo, object) .keyValueList[]: Structure changed (From: model.KeyValue, To: KeyValue)
    * Response (200, body, model.SecurityGroupInfo, object) .firewallRules[]: Structure changed (From: model.FirewallRuleInfo, To: FirewallRuleInfo)
    * Response (200, body, model.SecurityGroupInfo, object) .connectionConfig: Structure changed (From: model.ConnConfig, To: ConnConfig)
    * Response (200, body, model.SecurityGroupInfo, object) .connectionConfig.regionZoneInfo: Structure changed (From: model.RegionZoneInfo, To: RegionZoneInfo)
    * Response (200, body, model.SecurityGroupInfo, object) .connectionConfig.regionDetail: Structure changed (From: model.RegionDetail, To: RegionDetail)
    * Response (200, body, model.SecurityGroupInfo, object) .connectionConfig.regionDetail.location: Structure changed (From: model.Location, To: Location)
    * Response (404, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
[*] GET /migration/ns/{nsId}/resources/sshKey
    * Response (500, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (404, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
[*] POST /migration/ns/{nsId}/resources/sshKey
    * Request (body, sshKeyReq, model.SshKeyReq, object): Structure changed (From: model.SshKeyReq, To: SshKeyReq)
    * Response (200, body, model.SshKeyInfo, object): Structure changed (From: model.SshKeyInfo, To: SshKeyInfo)
    * Response (200, body, model.SshKeyInfo, object) .connectionConfig: Structure changed (From: model.ConnConfig, To: ConnConfig)
    * Response (200, body, model.SshKeyInfo, object) .connectionConfig.regionDetail: Structure changed (From: model.RegionDetail, To: RegionDetail)
    * Response (200, body, model.SshKeyInfo, object) .connectionConfig.regionDetail.location: Structure changed (From: model.Location, To: Location)
    * Response (200, body, model.SshKeyInfo, object) .connectionConfig.regionZoneInfo: Structure changed (From: model.RegionZoneInfo, To: RegionZoneInfo)
    * Response (200, body, model.SshKeyInfo, object) .keyValueList[]: Structure changed (From: model.KeyValue, To: KeyValue)
    * Response (404, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (500, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
[*] DELETE /migration/ns/{nsId}/resources/sshKey/{sshKeyId}
    * Response (500, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (200, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (404, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
[*] GET /migration/ns/{nsId}/resources/sshKey/{sshKeyId}
    * Response (200, body, model.SshKeyInfo, object): Structure changed (From: model.SshKeyInfo, To: SshKeyInfo)
    * Response (200, body, model.SshKeyInfo, object) .connectionConfig: Structure changed (From: model.ConnConfig, To: ConnConfig)
    * Response (200, body, model.SshKeyInfo, object) .connectionConfig.regionZoneInfo: Structure changed (From: model.RegionZoneInfo, To: RegionZoneInfo)
    * Response (200, body, model.SshKeyInfo, object) .connectionConfig.regionDetail: Structure changed (From: model.RegionDetail, To: RegionDetail)
    * Response (200, body, model.SshKeyInfo, object) .connectionConfig.regionDetail.location: Structure changed (From: model.Location, To: Location)
    * Response (200, body, model.SshKeyInfo, object) .keyValueList[]: Structure changed (From: model.KeyValue, To: KeyValue)
    * Response (404, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (500, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
[*] GET /migration/ns/{nsId}/resources/vNet
    * Response (404, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (500, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
[*] POST /migration/ns/{nsId}/resources/vNet
    * Request (body, vNetReq, model.VNetReq, object): Structure changed (From: model.VNetReq, To: VNetReq)
    * Request (body, vNetReq, model.VNetReq, object) .subnetInfoList[]: Structure changed (From: model.SubnetReq, To: SubnetReq)
    * Response (200, body, model.VNetInfo, object): Structure changed (From: model.VNetInfo, To: VNetInfo)
    * Response (200, body, model.VNetInfo, object) .connectionConfig: Structure changed (From: model.ConnConfig, To: ConnConfig)
    * Response (200, body, model.VNetInfo, object) .connectionConfig.regionDetail: Structure changed (From: model.RegionDetail, To: RegionDetail)
    * Response (200, body, model.VNetInfo, object) .connectionConfig.regionDetail.location: Structure changed (From: model.Location, To: Location)
    * Response (200, body, model.VNetInfo, object) .connectionConfig.regionZoneInfo: Structure changed (From: model.RegionZoneInfo, To: RegionZoneInfo)
    * Response (200, body, model.VNetInfo, object) .keyValueList[]: Structure changed (From: model.KeyValue, To: KeyValue)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[]: Structure changed (From: model.SubnetInfo, To: SubnetInfo)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[].connectionConfig: Structure changed (From: model.ConnConfig, To: ConnConfig)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[].connectionConfig.regionDetail: Structure changed (From: model.RegionDetail, To: RegionDetail)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[].connectionConfig.regionDetail.location: Structure changed (From: model.Location, To: Location)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[].connectionConfig.regionZoneInfo: Structure changed (From: model.RegionZoneInfo, To: RegionZoneInfo)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[].bastionNodes[]: Structure changed (From: model.BastionNode, To: BastionNode)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[].keyValueList[]: Structure changed (From: model.KeyValue, To: KeyValue)
    * Response (400, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (500, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
[*] DELETE /migration/ns/{nsId}/resources/vNet/{vNetId}
    * Response (200, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (404, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
[*] GET /migration/ns/{nsId}/resources/vNet/{vNetId}
    * Response (200, body, model.VNetInfo, object): Structure changed (From: model.VNetInfo, To: VNetInfo)
    * Response (200, body, model.VNetInfo, object) .connectionConfig: Structure changed (From: model.ConnConfig, To: ConnConfig)
    * Response (200, body, model.VNetInfo, object) .connectionConfig.regionZoneInfo: Structure changed (From: model.RegionZoneInfo, To: RegionZoneInfo)
    * Response (200, body, model.VNetInfo, object) .connectionConfig.regionDetail: Structure changed (From: model.RegionDetail, To: RegionDetail)
    * Response (200, body, model.VNetInfo, object) .connectionConfig.regionDetail.location: Structure changed (From: model.Location, To: Location)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[]: Structure changed (From: model.SubnetInfo, To: SubnetInfo)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[].connectionConfig: Structure changed (From: model.ConnConfig, To: ConnConfig)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[].connectionConfig.regionZoneInfo: Structure changed (From: model.RegionZoneInfo, To: RegionZoneInfo)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[].connectionConfig.regionDetail: Structure changed (From: model.RegionDetail, To: RegionDetail)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[].connectionConfig.regionDetail.location: Structure changed (From: model.Location, To: Location)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[].keyValueList[]: Structure changed (From: model.KeyValue, To: KeyValue)
    * Response (200, body, model.VNetInfo, object) .subnetInfoList[].bastionNodes[]: Structure changed (From: model.BastionNode, To: BastionNode)
    * Response (200, body, model.VNetInfo, object) .keyValueList[]: Structure changed (From: model.KeyValue, To: KeyValue)
    * Response (404, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
    * Response (500, body, model.SimpleMsg, object): Structure changed (From: model.SimpleMsg, To: SimpleMsg)
[*] GET /readyz
    * Response (200, body, common.SimpleMessage, object): Structure changed (From: common.SimpleMessage, To: SimpleMessage)
    * Response (503, body, common.SimpleMessage, object): Structure changed (From: common.SimpleMessage, To: SimpleMessage)
[*] POST /recommendation/containerInfra
    * Request (body, UserInfra, controller.RecommendInfraRequest, object): Structure changed (From: controller.RecommendInfraRequest, To: RecommendInfraRequest)
    * Request (body, UserInfra, controller.RecommendInfraRequest, object) .servers[]: Structure changed (From: recommendation.Kubernetes, To: Kubernetes)
    * Request (body, UserInfra, controller.RecommendInfraRequest, object) .servers[].nodes[]: Structure changed (From: recommendation.Node, To: Node)
    * Request (body, UserInfra, controller.RecommendInfraRequest, object) .servers[].nodes[].type: Structure changed (From: recommendation.NodeType, To: NodeType)
    * Request (body, UserInfra, controller.RecommendInfraRequest, object) .servers[].nodes[].node_spec: Structure changed (From: recommendation.NodeSpec, To: NodeSpec)
    * Request (body, UserInfra, controller.RecommendInfraRequest, object) .servers[].node_count: Structure changed (From: recommendation.NodeCount, To: NodeCount)
    * Response (400, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (200, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] POST /recommendation/k8sControlPlane
    * Request (body, UserK8sInfra, recommendation.KubernetesInfoList, object): Structure changed (From: recommendation.KubernetesInfoList, To: KubernetesInfoList)
    * Request (body, UserK8sInfra, recommendation.KubernetesInfoList, object) .servers[]: Structure changed (From: recommendation.Kubernetes, To: Kubernetes)
    * Request (body, UserK8sInfra, recommendation.KubernetesInfoList, object) .servers[].node_count: Structure changed (From: recommendation.NodeCount, To: NodeCount)
    * Request (body, UserK8sInfra, recommendation.KubernetesInfoList, object) .servers[].nodes[]: Structure changed (From: recommendation.Node, To: Node)
    * Request (body, UserK8sInfra, recommendation.KubernetesInfoList, object) .servers[].nodes[].type: Structure changed (From: recommendation.NodeType, To: NodeType)
    * Request (body, UserK8sInfra, recommendation.KubernetesInfoList, object) .servers[].nodes[].node_spec: Structure changed (From: recommendation.NodeSpec, To: NodeSpec)
    * Response (400, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (200, body, model.K8sClusterDynamicReq, object): Structure changed (From: model.K8sClusterDynamicReq, To: K8sClusterDynamicReq)
[*] POST /recommendation/k8sNodeGroup
    * Request (body, UserK8sInfra, recommendation.KubernetesInfoList, object): Structure changed (From: recommendation.KubernetesInfoList, To: KubernetesInfoList)
    * Request (body, UserK8sInfra, recommendation.KubernetesInfoList, object) .servers[]: Structure changed (From: recommendation.Kubernetes, To: Kubernetes)
    * Request (body, UserK8sInfra, recommendation.KubernetesInfoList, object) .servers[].node_count: Structure changed (From: recommendation.NodeCount, To: NodeCount)
    * Request (body, UserK8sInfra, recommendation.KubernetesInfoList, object) .servers[].nodes[]: Structure changed (From: recommendation.Node, To: Node)
    * Request (body, UserK8sInfra, recommendation.KubernetesInfoList, object) .servers[].nodes[].node_spec: Structure changed (From: recommendation.NodeSpec, To: NodeSpec)
    * Request (body, UserK8sInfra, recommendation.KubernetesInfoList, object) .servers[].nodes[].type: Structure changed (From: recommendation.NodeType, To: NodeType)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (200, body, model.K8sNodeGroupReq, object): Structure changed (From: model.K8sNodeGroupReq, To: K8sNodeGroupReq)
    * Response (400, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] POST /recommendation/mci
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object): Structure changed (From: controller.RecommendVmInfraRequest, To: RecommendVmInfraRequest)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel: Structure changed (From: onpremisemodel.OnpremInfra, To: OnpremInfra)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[]: Structure changed (From: onpremisemodel.ServerProperty, To: ServerProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].memory: Structure changed (From: onpremisemodel.MemoryProperty, To: MemoryProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].routingTable[]: Structure changed (From: onpremisemodel.RouteProperty, To: RouteProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].os: Structure changed (From: onpremisemodel.OsProperty, To: OsProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].rootDisk: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].cpu: Structure changed (From: onpremisemodel.CpuProperty, To: CpuProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].dataDisks[]: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].firewallTable[]: Structure changed (From: onpremisemodel.FirewallRuleProperty, To: FirewallRuleProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].interfaces[]: Structure changed (From: onpremisemodel.NetworkInterfaceProperty, To: NetworkInterfaceProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network: Structure changed (From: onpremisemodel.NetworkProperty, To: NetworkProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network.ipv4Networks: Structure changed (From: onpremisemodel.NetworkDetail, To: NetworkDetail)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network.ipv4Networks.defaultGateways[]: Structure changed (From: onpremisemodel.GatewayProperty, To: GatewayProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .desiredCspAndRegionPair: Structure changed (From: cloudmodel.CloudProperty, To: CloudProperty)
    * Response (200, body, controller.RecommendVmInfraResponse, object): Structure changed (From: controller.RecommendVmInfraResponse, To: RecommendVmInfraResponse)
    * Response (200, body, controller.RecommendVmInfraResponse, object) .targetVmOsImageList[]: Structure changed (From: cloudmodel.ImageInfo, To: ImageInfo)
    * Response (200, body, controller.RecommendVmInfraResponse, object) .targetVmOsImageList[].details[]: Structure changed (From: cloudmodel.KeyValue, To: KeyValue)
    * Response (200, body, controller.RecommendVmInfraResponse, object) .targetSshKey: Structure changed (From: cloudmodel.SshKeyReq, To: SshKeyReq)
    * Response (200, body, controller.RecommendVmInfraResponse, object) .targetVmSpecList[]: Structure changed (From: cloudmodel.SpecInfo, To: SpecInfo)
    * Response (200, body, controller.RecommendVmInfraResponse, object) .targetVmSpecList[].details[]: Structure changed (From: cloudmodel.KeyValue, To: KeyValue)
    * Response (200, body, controller.RecommendVmInfraResponse, object) .targetCloud: Structure changed (From: cloudmodel.CloudProperty, To: CloudProperty)
    * Response (200, body, controller.RecommendVmInfraResponse, object) .targetSecurityGroupList[]: Structure changed (From: cloudmodel.SecurityGroupReq, To: SecurityGroupReq)
    * Response (200, body, controller.RecommendVmInfraResponse, object) .targetSecurityGroupList[].firewallRules[]: Structure changed (From: cloudmodel.FirewallRuleReq, To: FirewallRuleReq)
    * Response (200, body, controller.RecommendVmInfraResponse, object) .targetVmInfra: Structure changed (From: cloudmodel.MciReq, To: MciReq)
    * Response (200, body, controller.RecommendVmInfraResponse, object) .targetVmInfra.subGroups[]: Structure changed (From: cloudmodel.CreateSubGroupReq, To: CreateSubGroupReq)
    * Response (200, body, controller.RecommendVmInfraResponse, object) .targetVNet: Structure changed (From: cloudmodel.VNetReq, To: VNetReq)
    * Response (200, body, controller.RecommendVmInfraResponse, object) .targetVNet.subnetInfoList[]: Structure changed (From: cloudmodel.SubnetReq, To: SubnetReq)
    * Response (404, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] POST /recommendation/mciWithDefaults
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object): Structure changed (From: controller.RecommendVmInfraWithDefaultsRequest, To: RecommendVmInfraWithDefaultsRequest)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .desiredCspAndRegionPair: Structure changed (From: cloudmodel.CloudProperty, To: CloudProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .onpremiseInfraModel: Structure changed (From: onpremisemodel.OnpremInfra, To: OnpremInfra)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .onpremiseInfraModel.network: Structure changed (From: onpremisemodel.NetworkProperty, To: NetworkProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .onpremiseInfraModel.network.ipv4Networks: Structure changed (From: onpremisemodel.NetworkDetail, To: NetworkDetail)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .onpremiseInfraModel.network.ipv4Networks.defaultGateways[]: Structure changed (From: onpremisemodel.GatewayProperty, To: GatewayProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .onpremiseInfraModel.servers[]: Structure changed (From: onpremisemodel.ServerProperty, To: ServerProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .onpremiseInfraModel.servers[].rootDisk: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .onpremiseInfraModel.servers[].cpu: Structure changed (From: onpremisemodel.CpuProperty, To: CpuProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .onpremiseInfraModel.servers[].dataDisks[]: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .onpremiseInfraModel.servers[].routingTable[]: Structure changed (From: onpremisemodel.RouteProperty, To: RouteProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .onpremiseInfraModel.servers[].firewallTable[]: Structure changed (From: onpremisemodel.FirewallRuleProperty, To: FirewallRuleProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .onpremiseInfraModel.servers[].interfaces[]: Structure changed (From: onpremisemodel.NetworkInterfaceProperty, To: NetworkInterfaceProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .onpremiseInfraModel.servers[].memory: Structure changed (From: onpremisemodel.MemoryProperty, To: MemoryProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraWithDefaultsRequest, object) .onpremiseInfraModel.servers[].os: Structure changed (From: onpremisemodel.OsProperty, To: OsProperty)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (200, body, controller.RecommendVmInfraWithDefaultsResponse, object): Structure changed (From: controller.RecommendVmInfraWithDefaultsResponse, To: RecommendVmInfraWithDefaultsResponse)
    * Response (200, body, controller.RecommendVmInfraWithDefaultsResponse, object) .targetVmInfraList[]: Structure changed (From: cloudmodel.RecommendedVmInfraDynamic, To: RecommendedVmInfraDynamic)
    * Response (200, body, controller.RecommendVmInfraWithDefaultsResponse, object) .targetVmInfraList[].targetVmInfra: Structure changed (From: cloudmodel.MciDynamicReq, To: MciDynamicReq)
    * Response (200, body, controller.RecommendVmInfraWithDefaultsResponse, object) .targetVmInfraList[].targetVmInfra.subGroups[]: Structure changed (From: cloudmodel.CreateSubGroupDynamicReq, To: CreateSubGroupDynamicReq)
    * Response (404, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] POST /recommendation/middleware/objectStorage
    * Request (body, request, controller.RecommendObjectStorageRequest, object): Structure changed (From: controller.RecommendObjectStorageRequest, To: RecommendObjectStorageRequest)
    * Request (body, request, controller.RecommendObjectStorageRequest, object) .desiredCloud: Structure changed (From: cloudmodel.CloudProperty, To: CloudProperty)
    * Request (body, request, controller.RecommendObjectStorageRequest, object) .sourceObjectStorages[]: Structure changed (From: controller.SourceObjectStorageProperty, To: SourceObjectStorageProperty)
    * Request (body, request, controller.RecommendObjectStorageRequest, object) .sourceObjectStorages[].corsRules[]: Structure changed (From: controller.CORSRule, To: CORSRule)
    * Response (200, body, controller.RecommendObjectStorageResponse, object): Structure changed (From: controller.RecommendObjectStorageResponse, To: RecommendObjectStorageResponse)
    * Response (200, body, controller.RecommendObjectStorageResponse, object) .targetCloud: Structure changed (From: cloudmodel.CloudProperty, To: CloudProperty)
    * Response (200, body, controller.RecommendObjectStorageResponse, object) .targetObjectStorages[]: Structure changed (From: controller.TargetObjectStorageProperty, To: TargetObjectStorageProperty)
    * Response (200, body, controller.RecommendObjectStorageResponse, object) .targetObjectStorages[].corsRules[]: Structure changed (From: controller.CORSRule, To: CORSRule)
    * Response (400, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] POST /recommendation/resources/securityGroups
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object): Structure changed (From: controller.RecommendVmInfraRequest, To: RecommendVmInfraRequest)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .desiredCspAndRegionPair: Structure changed (From: cloudmodel.CloudProperty, To: CloudProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel: Structure changed (From: onpremisemodel.OnpremInfra, To: OnpremInfra)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network: Structure changed (From: onpremisemodel.NetworkProperty, To: NetworkProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network.ipv4Networks: Structure changed (From: onpremisemodel.NetworkDetail, To: NetworkDetail)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network.ipv4Networks.defaultGateways[]: Structure changed (From: onpremisemodel.GatewayProperty, To: GatewayProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[]: Structure changed (From: onpremisemodel.ServerProperty, To: ServerProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].cpu: Structure changed (From: onpremisemodel.CpuProperty, To: CpuProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].dataDisks[]: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].firewallTable[]: Structure changed (From: onpremisemodel.FirewallRuleProperty, To: FirewallRuleProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].interfaces[]: Structure changed (From: onpremisemodel.NetworkInterfaceProperty, To: NetworkInterfaceProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].memory: Structure changed (From: onpremisemodel.MemoryProperty, To: MemoryProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].routingTable[]: Structure changed (From: onpremisemodel.RouteProperty, To: RouteProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].os: Structure changed (From: onpremisemodel.OsProperty, To: OsProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].rootDisk: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Response (200, body, controller.RecommendSecurityGroupResponse, object): Structure changed (From: controller.RecommendSecurityGroupResponse, To: RecommendSecurityGroupResponse)
    * Response (200, body, controller.RecommendSecurityGroupResponse, object) .targetSecurityGroupList[]: Structure changed (From: cloudmodel.RecommendedSecurityGroup, To: RecommendedSecurityGroup)
    * Response (200, body, controller.RecommendSecurityGroupResponse, object) .targetSecurityGroupList[].targetSecurityGroup: Structure changed (From: cloudmodel.SecurityGroupReq, To: SecurityGroupReq)
    * Response (200, body, controller.RecommendSecurityGroupResponse, object) .targetSecurityGroupList[].targetSecurityGroup.firewallRules[]: Structure changed (From: cloudmodel.FirewallRuleReq, To: FirewallRuleReq)
    * Response (404, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] POST /recommendation/resources/vNet
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object): Structure changed (From: controller.RecommendVmInfraRequest, To: RecommendVmInfraRequest)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .desiredCspAndRegionPair: Structure changed (From: cloudmodel.CloudProperty, To: CloudProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel: Structure changed (From: onpremisemodel.OnpremInfra, To: OnpremInfra)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network: Structure changed (From: onpremisemodel.NetworkProperty, To: NetworkProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network.ipv4Networks: Structure changed (From: onpremisemodel.NetworkDetail, To: NetworkDetail)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network.ipv4Networks.defaultGateways[]: Structure changed (From: onpremisemodel.GatewayProperty, To: GatewayProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[]: Structure changed (From: onpremisemodel.ServerProperty, To: ServerProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].dataDisks[]: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].firewallTable[]: Structure changed (From: onpremisemodel.FirewallRuleProperty, To: FirewallRuleProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].interfaces[]: Structure changed (From: onpremisemodel.NetworkInterfaceProperty, To: NetworkInterfaceProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].routingTable[]: Structure changed (From: onpremisemodel.RouteProperty, To: RouteProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].os: Structure changed (From: onpremisemodel.OsProperty, To: OsProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].memory: Structure changed (From: onpremisemodel.MemoryProperty, To: MemoryProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].rootDisk: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].cpu: Structure changed (From: onpremisemodel.CpuProperty, To: CpuProperty)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (200, body, controller.RecommendVNetResponse, object): Structure changed (From: controller.RecommendVNetResponse, To: RecommendVNetResponse)
    * Response (200, body, controller.RecommendVNetResponse, object) .targetVNetList[]: Structure changed (From: cloudmodel.RecommendedVNet, To: RecommendedVNet)
    * Response (200, body, controller.RecommendVNetResponse, object) .targetVNetList[].targetVNet: Structure changed (From: cloudmodel.VNetReq, To: VNetReq)
    * Response (200, body, controller.RecommendVNetResponse, object) .targetVNetList[].targetVNet.subnetInfoList[]: Structure changed (From: cloudmodel.SubnetReq, To: SubnetReq)
    * Response (404, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] POST /recommendation/resources/vmOsImages
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object): Structure changed (From: controller.RecommendVmInfraRequest, To: RecommendVmInfraRequest)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .desiredCspAndRegionPair: Structure changed (From: cloudmodel.CloudProperty, To: CloudProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel: Structure changed (From: onpremisemodel.OnpremInfra, To: OnpremInfra)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network: Structure changed (From: onpremisemodel.NetworkProperty, To: NetworkProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network.ipv4Networks: Structure changed (From: onpremisemodel.NetworkDetail, To: NetworkDetail)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network.ipv4Networks.defaultGateways[]: Structure changed (From: onpremisemodel.GatewayProperty, To: GatewayProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[]: Structure changed (From: onpremisemodel.ServerProperty, To: ServerProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].memory: Structure changed (From: onpremisemodel.MemoryProperty, To: MemoryProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].routingTable[]: Structure changed (From: onpremisemodel.RouteProperty, To: RouteProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].cpu: Structure changed (From: onpremisemodel.CpuProperty, To: CpuProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].dataDisks[]: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].firewallTable[]: Structure changed (From: onpremisemodel.FirewallRuleProperty, To: FirewallRuleProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].os: Structure changed (From: onpremisemodel.OsProperty, To: OsProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].rootDisk: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].interfaces[]: Structure changed (From: onpremisemodel.NetworkInterfaceProperty, To: NetworkInterfaceProperty)
    * Response (200, body, controller.RecommendVmOsImageResponse, object): Structure changed (From: controller.RecommendVmOsImageResponse, To: RecommendVmOsImageResponse)
    * Response (200, body, controller.RecommendVmOsImageResponse, object) .recommendedVmOsImageList[]: Structure changed (From: cloudmodel.RecommendedVmOsImage, To: RecommendedVmOsImage)
    * Response (200, body, controller.RecommendVmOsImageResponse, object) .recommendedVmOsImageList[].targetVmOsImage: Structure changed (From: cloudmodel.ImageInfo, To: ImageInfo)
    * Response (200, body, controller.RecommendVmOsImageResponse, object) .recommendedVmOsImageList[].targetVmOsImage.details[]: Structure changed (From: cloudmodel.KeyValue, To: KeyValue)
    * Response (404, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] POST /recommendation/resources/vmSpecs
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object): Structure changed (From: controller.RecommendVmInfraRequest, To: RecommendVmInfraRequest)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel: Structure changed (From: onpremisemodel.OnpremInfra, To: OnpremInfra)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network: Structure changed (From: onpremisemodel.NetworkProperty, To: NetworkProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network.ipv4Networks: Structure changed (From: onpremisemodel.NetworkDetail, To: NetworkDetail)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network.ipv4Networks.defaultGateways[]: Structure changed (From: onpremisemodel.GatewayProperty, To: GatewayProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[]: Structure changed (From: onpremisemodel.ServerProperty, To: ServerProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].dataDisks[]: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].interfaces[]: Structure changed (From: onpremisemodel.NetworkInterfaceProperty, To: NetworkInterfaceProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].memory: Structure changed (From: onpremisemodel.MemoryProperty, To: MemoryProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].rootDisk: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].cpu: Structure changed (From: onpremisemodel.CpuProperty, To: CpuProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].firewallTable[]: Structure changed (From: onpremisemodel.FirewallRuleProperty, To: FirewallRuleProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].routingTable[]: Structure changed (From: onpremisemodel.RouteProperty, To: RouteProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].os: Structure changed (From: onpremisemodel.OsProperty, To: OsProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .desiredCspAndRegionPair: Structure changed (From: cloudmodel.CloudProperty, To: CloudProperty)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (200, body, controller.RecommendVmSpecResponse, object): Structure changed (From: controller.RecommendVmSpecResponse, To: RecommendVmSpecResponse)
    * Response (200, body, controller.RecommendVmSpecResponse, object) .recommendedVmSpecList[]: Structure changed (From: cloudmodel.RecommendedVmSpec, To: RecommendedVmSpec)
    * Response (200, body, controller.RecommendVmSpecResponse, object) .recommendedVmSpecList[].targetVmSpec: Structure changed (From: cloudmodel.SpecInfo, To: SpecInfo)
    * Response (200, body, controller.RecommendVmSpecResponse, object) .recommendedVmSpecList[].targetVmSpec.details[]: Structure changed (From: cloudmodel.KeyValue, To: KeyValue)
    * Response (404, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] POST /recommendation/vmInfra
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object): Structure changed (From: controller.RecommendVmInfraRequest, To: RecommendVmInfraRequest)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel: Structure changed (From: onpremisemodel.OnpremInfra, To: OnpremInfra)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network: Structure changed (From: onpremisemodel.NetworkProperty, To: NetworkProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network.ipv4Networks: Structure changed (From: onpremisemodel.NetworkDetail, To: NetworkDetail)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.network.ipv4Networks.defaultGateways[]: Structure changed (From: onpremisemodel.GatewayProperty, To: GatewayProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[]: Structure changed (From: onpremisemodel.ServerProperty, To: ServerProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].cpu: Structure changed (From: onpremisemodel.CpuProperty, To: CpuProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].dataDisks[]: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].firewallTable[]: Structure changed (From: onpremisemodel.FirewallRuleProperty, To: FirewallRuleProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].interfaces[]: Structure changed (From: onpremisemodel.NetworkInterfaceProperty, To: NetworkInterfaceProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].memory: Structure changed (From: onpremisemodel.MemoryProperty, To: MemoryProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].routingTable[]: Structure changed (From: onpremisemodel.RouteProperty, To: RouteProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].os: Structure changed (From: onpremisemodel.OsProperty, To: OsProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .onpremiseInfraModel.servers[].rootDisk: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, UserInfra, controller.RecommendVmInfraRequest, object) .desiredCspAndRegionPair: Structure changed (From: cloudmodel.CloudProperty, To: CloudProperty)
    * Response (400, body, model.ApiResponse-any, object): Structure changed (From: model.ApiResponse-any, To: ApiResponse-any)
    - Response (400, body, model.ApiResponse-any, object) .items: Property removed
    - Response (400, body, model.ApiResponse-any, object) .item: Property removed
    + Response (400, body, ApiResponse-any, object) .data: Property added
    * Response (500, body, model.ApiResponse-any, object): Structure changed (From: model.ApiResponse-any, To: ApiResponse-any)
    - Response (500, body, model.ApiResponse-any, object) .item: Property removed
    - Response (500, body, model.ApiResponse-any, object) .items: Property removed
    + Response (500, body, ApiResponse-any, object) .data: Property added
    * Response (200, body, model.ApiResponse-cloudmodel_RecommendedVmInfra, object): Structure changed (From: model.ApiResponse-cloudmodel_RecommendedVmInfra, To: ApiResponse-array_RecommendedVmInfra)
    - Response (200, body, model.ApiResponse-cloudmodel_RecommendedVmInfra, object) .item: Property removed
    - Response (200, body, model.ApiResponse-cloudmodel_RecommendedVmInfra, object) .items: Property removed
    + Response (200, body, ApiResponse-array_RecommendedVmInfra, object) .data: Property added
[*] POST /report/migration/ns/{nsId}/mci/{mciId}
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object): Structure changed (From: controller.GenerateMigrationReportRequest, To: GenerateMigrationReportRequest)
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object) .onpremiseInfraModel: Structure changed (From: onpremisemodel.OnpremInfra, To: OnpremInfra)
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object) .onpremiseInfraModel.network: Structure changed (From: onpremisemodel.NetworkProperty, To: NetworkProperty)
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object) .onpremiseInfraModel.network.ipv4Networks: Structure changed (From: onpremisemodel.NetworkDetail, To: NetworkDetail)
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object) .onpremiseInfraModel.network.ipv4Networks.defaultGateways[]: Structure changed (From: onpremisemodel.GatewayProperty, To: GatewayProperty)
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object) .onpremiseInfraModel.servers[]: Structure changed (From: onpremisemodel.ServerProperty, To: ServerProperty)
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object) .onpremiseInfraModel.servers[].routingTable[]: Structure changed (From: onpremisemodel.RouteProperty, To: RouteProperty)
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object) .onpremiseInfraModel.servers[].os: Structure changed (From: onpremisemodel.OsProperty, To: OsProperty)
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object) .onpremiseInfraModel.servers[].rootDisk: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object) .onpremiseInfraModel.servers[].firewallTable[]: Structure changed (From: onpremisemodel.FirewallRuleProperty, To: FirewallRuleProperty)
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object) .onpremiseInfraModel.servers[].memory: Structure changed (From: onpremisemodel.MemoryProperty, To: MemoryProperty)
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object) .onpremiseInfraModel.servers[].cpu: Structure changed (From: onpremisemodel.CpuProperty, To: CpuProperty)
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object) .onpremiseInfraModel.servers[].dataDisks[]: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, onpremiseInfraModel, controller.GenerateMigrationReportRequest, object) .onpremiseInfraModel.servers[].interfaces[]: Structure changed (From: onpremisemodel.NetworkInterfaceProperty, To: NetworkInterfaceProperty)
    * Response (400, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
[*] DELETE /request/{reqId}
    * Response (200, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (404, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] GET /request/{reqId}
    * Response (200, body, common.RequestDetails, object): Structure changed (From: common.RequestDetails, To: RequestDetails)
    * Response (404, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (500, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] DELETE /requests
    * Response (200, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
[*] POST /summary/source
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object): Structure changed (From: controller.GenerateSourceInfraSummaryRequest, To: GenerateSourceInfraSummaryRequest)
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object) .onpremiseInfraModel: Structure changed (From: onpremisemodel.OnpremInfra, To: OnpremInfra)
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object) .onpremiseInfraModel.network: Structure changed (From: onpremisemodel.NetworkProperty, To: NetworkProperty)
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object) .onpremiseInfraModel.network.ipv4Networks: Structure changed (From: onpremisemodel.NetworkDetail, To: NetworkDetail)
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object) .onpremiseInfraModel.network.ipv4Networks.defaultGateways[]: Structure changed (From: onpremisemodel.GatewayProperty, To: GatewayProperty)
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object) .onpremiseInfraModel.servers[]: Structure changed (From: onpremisemodel.ServerProperty, To: ServerProperty)
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object) .onpremiseInfraModel.servers[].os: Structure changed (From: onpremisemodel.OsProperty, To: OsProperty)
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object) .onpremiseInfraModel.servers[].cpu: Structure changed (From: onpremisemodel.CpuProperty, To: CpuProperty)
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object) .onpremiseInfraModel.servers[].interfaces[]: Structure changed (From: onpremisemodel.NetworkInterfaceProperty, To: NetworkInterfaceProperty)
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object) .onpremiseInfraModel.servers[].routingTable[]: Structure changed (From: onpremisemodel.RouteProperty, To: RouteProperty)
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object) .onpremiseInfraModel.servers[].rootDisk: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object) .onpremiseInfraModel.servers[].dataDisks[]: Structure changed (From: onpremisemodel.DiskProperty, To: DiskProperty)
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object) .onpremiseInfraModel.servers[].firewallTable[]: Structure changed (From: onpremisemodel.FirewallRuleProperty, To: FirewallRuleProperty)
    * Request (body, Request, controller.GenerateSourceInfraSummaryRequest, object) .onpremiseInfraModel.servers[].memory: Structure changed (From: onpremisemodel.MemoryProperty, To: MemoryProperty)
    * Response (400, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
[*] GET /summary/target/ns/{nsId}/mci/{mciId}
    * Response (400, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
    * Response (404, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
    * Response (500, body, github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, object): Structure changed (From: github_com_cloud-barista_cm-beetle_pkg_api_rest_model_beetle.Response, To: Response)
[*] GET /test/tracing
    * Response (503, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)
    * Response (200, body, common.SimpleMsg, object): Structure changed (From: common.SimpleMsg, To: SimpleMsg)

- Move response models to model/beetle subpackage
- Change ApiResponse.Data to *T for proper omitempty
- Update all controller imports to new package path
- Update API development guide with pointer rationale
- Regenerate Swagger docs for new structure
@cb-github-robot
Copy link
Member

API Change Report

The following API changes have been detected in this Pull Request compared to the base branch.

DeepDiffGo Report
Comparing:
  - Old: prev_spec.yaml
  - New: api/swagger.yaml
=================
[*] POST /recommendation/vmInfra
    - Response (400, body, model.ApiResponse-any, object) .item: Property removed
    - Response (400, body, model.ApiResponse-any, object) .items: Property removed
    + Response (400, body, model.ApiResponse-any, object) .data: Property added
    - Response (500, body, model.ApiResponse-any, object) .item: Property removed
    - Response (500, body, model.ApiResponse-any, object) .items: Property removed
    + Response (500, body, model.ApiResponse-any, object) .data: Property added
    * Response (200, body, model.ApiResponse-cloudmodel_RecommendedVmInfra, object): Structure changed (From: model.ApiResponse-cloudmodel_RecommendedVmInfra, To: model.ApiResponse-array_cloudmodel_RecommendedVmInfra)
    - Response (200, body, model.ApiResponse-cloudmodel_RecommendedVmInfra, object) .item: Property removed
    - Response (200, body, model.ApiResponse-cloudmodel_RecommendedVmInfra, object) .items: Property removed
    + Response (200, body, model.ApiResponse-array_cloudmodel_RecommendedVmInfra, object) .data: Property added

@yunkon-kim
Copy link
Member Author

Note:

  • ApiResponse applies only to recently added APIs.
  • This will be updated globally in the future.

@yunkon-kim
Copy link
Member Author

/approve

@github-actions github-actions bot added the approved This PR is approved and will be merged soon. label Dec 9, 2025
@cb-github-robot cb-github-robot merged commit acbf03e into cloud-barista:main Dec 9, 2025
3 checks passed
@yunkon-kim yunkon-kim deleted the 251209-15 branch December 9, 2025 07:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved This PR is approved and will be merged soon.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants