github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/sms/v3/sources/requests.go (about) 1 package sources 2 3 import ( 4 "github.com/chnsz/golangsdk" 5 "github.com/chnsz/golangsdk/pagination" 6 ) 7 8 // ListOpts 查询源端服务器列表 9 type ListOpts struct { 10 // 源端服务器名称 11 Name string `q:"name"` 12 // 源端服务器ID 13 Id string `q:"id"` 14 // 源端服务器IP地址 15 Ip string `q:"ip"` 16 // 源端服务器状态 17 State string `q:"state"` 18 // 是否查询失去连接的源端 19 Connected bool `q:"connected"` 20 // 根据迁移周期查询 21 MigrationCycle string `q:"migration_cycle"` 22 // 迁移项目id,填写该参数将查询迁移项目下的所有虚拟机 23 MigateProjectId string `q:"migproject"` 24 // 需要查询的企业项目id 25 EnterpriseProjectId string `q:"enterprise_project_id"` 26 27 // 每一页记录的源端服务器数量,0表示用默认值 200 28 Limit int `q:"limit"` 29 // 偏移量,默认值0 30 Offset int `q:"offset"` 31 } 32 33 // List is a method to query the list of the source servers using given opts. 34 func List(c *golangsdk.ServiceClient, opts ListOpts) ([]SourceServer, error) { 35 url := listURL(c) 36 query, err := golangsdk.BuildQueryString(opts) 37 if err != nil { 38 return nil, err 39 } 40 url += query.String() 41 42 pages, err := pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page { 43 p := SourceServerPage{pagination.OffsetPageBase{PageResult: r}} 44 return p 45 }).AllPages() 46 47 if err != nil { 48 return nil, err 49 } 50 return ExtractSourceServers(pages) 51 } 52 53 // Get 查询指定ID的源端服务器 54 func Get(c *golangsdk.ServiceClient, id string) (*SourceServer, error) { 55 var rst golangsdk.Result 56 _, rst.Err = c.Get(getURL(c, id), &rst.Body, nil) 57 58 var r SourceServer 59 err := rst.ExtractInto(&r) 60 if err != nil { 61 return nil, err 62 } 63 64 return &r, nil 65 }