github.com/sacloud/iaas-api-go@v1.12.0/docs/design/overview.md (about)

     1  # sacloud/iaas-api-go
     2  
     3  - URL: https://github.com/sacloud/iaas-api-go/pull/2
     4  - Parent: https://github.com/sacloud/iaas-service-go/pull/1
     5  - Author: @yamamoto-febc
     6  
     7  ## 概要
     8  
     9  [iaas-service-goの基本方針](https://github.com/sacloud/iaas-service-go/pull/1)に従い、sacloud/libsacloud v2からIaaS部分を切り出す。
    10  
    11  ## やること/やらないこと
    12  
    13  ### やること
    14  
    15  - libsacloudからのIaaS部分の切り出し
    16  - iaas-api-go v1としてリリース
    17  - libsacloudの`sacloud`パッケージ配下の整理
    18    - ~typesやostypeといったパッケージ構成の再考/整理~
    19     
    20  ### やらないこと
    21  
    22  - libsacloud v2の独自DSLを含むlibsacloudの実装の改善
    23    基本的にlibsacloud v2をそのまま移植する。ただし、前述の`sacloud`パッケージ配下の整理などのリファクタレベルの修正は行う。
    24    従来[libsacloud v3として検討されてきた内容](https://github.com/sacloud/libsacloud/issues/791)はiaas-service-goやiaas-api-go v2で実現する。
    25  
    26  ## 実装
    27  
    28  ### libsacloudとiaas-api-goの並列開発
    29  
    30  当面はlibsacloudの修正を継続する。libsacloudに対して行われた修正は手作業でiaas-api-goに取り込む。  
    31  iaas-api-goへの移植は[libsacloud v2.32.2](https://github.com/sacloud/libsacloud/tree/v2.32.2)を元にする。  
    32  
    33  ### 方針
    34  
    35  `sacloud`パッケージについて、libsacloudのクライアント側での修正が容易に行える程度の改修をしつつ移植する。
    36  (容易 == 機械的に置き換えできる、という程度)
    37  
    38  ### 移植対象/対応
    39  
    40  #### リポジトリ運用
    41  
    42  [libsacloud v2.32.2](https://github.com/sacloud/libsacloud/tree/v2.32.2)を基点にソースコード類をコピーして移行する。  
    43  libsacloudからのforkは行わず新たなリポジトリで開発していく。
    44  
    45  #### libsacloudのパッケージ構成/移行対象
    46  
    47  ```console
    48  - examples: otel利用例
    49  - helper: 高レベルAPI群(一部をiaas-service-goへ)
    50  - internal: 独自DSL
    51  - pkg: libsacloudに依存しないユーティリティなど => packages-goへ
    52  - sacloud
    53    - accessor
    54    - fake
    55    - naked
    56    - ostype
    57    - pointer => packages-goへ
    58    - profile => api-client-goへ
    59    - search
    60    - stub
    61    - test
    62    - testutil => 一部をpackages-goへ
    63    - trace
    64    - types
    65    - sacloud直下
    66  ```
    67  
    68  - `profile`はapi-client-goで実装する  
    69  - testutilは整理してから切り出し/分割などの対応が必要  
    70  - ~typesは整理してからsacloud直下へ移動などの対応が必要~  
    71  
    72  #### iaas-api-goのパッケージ構成
    73  
    74  従来はsacloudパッケージ配下だったものをiaas-api-goの配下にする。  
    75  パッケージ名は`iaas`とする。
    76  
    77  ```console
    78  - accessor
    79  - defaults => libsacloudのhelper/defaultsの移植
    80  - fake
    81  - helper
    82    - cleanup  
    83    - plans    
    84    - power    
    85    - query    
    86    - wait     
    87  - internal => libsacloudの独自DSL実装など
    88  - naked
    89  - ostype
    90  - search
    91  - stub
    92  - test
    93  - testutil
    94  - trace
    95  - types
    96  - sacloud直下
    97  ```
    98  
    99  ## 改訂履歴
   100  
   101  - 2022/3/4: 初版作成
   102  - 2022/3/7: libsacloud/v2直下のパッケージについて追記
   103  - 2022/3/10: typesの改修を当面延期
   104  - 2022/3/29: sacloud-goの分割/リネームを反映