github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/autoscaling/v1/groups/results.go (about) 1 package groups 2 3 import ( 4 "github.com/chnsz/golangsdk" 5 "github.com/chnsz/golangsdk/pagination" 6 ) 7 8 // CreateResult is a struct retured by CreateGroup request 9 type CreateResult struct { 10 golangsdk.Result 11 } 12 13 // Extract the create group result as a string type. 14 func (r CreateResult) Extract() (string, error) { 15 var a struct { 16 GroupID string `json:"scaling_group_id"` 17 } 18 err := r.Result.ExtractInto(&a) 19 return a.GroupID, err 20 } 21 22 // DeleteResult contains the body of the deleting group request 23 type DeleteResult struct { 24 golangsdk.ErrResult 25 } 26 27 // GetResult contains the body of getting detailed group request 28 type GetResult struct { 29 golangsdk.Result 30 } 31 32 // Extract method will parse the result body into Group struct 33 func (r GetResult) Extract() (Group, error) { 34 var g Group 35 err := r.Result.ExtractIntoStructPtr(&g, "scaling_group") 36 return g, err 37 } 38 39 // Group represents the struct of one autoscaling group 40 type Group struct { 41 Name string `json:"scaling_group_name"` 42 ID string `json:"scaling_group_id"` 43 Status string `json:"scaling_group_status"` 44 ConfigurationID string `json:"scaling_configuration_id"` 45 ConfigurationName string `json:"scaling_configuration_name"` 46 ActualInstanceNumber int `json:"current_instance_number"` 47 DesireInstanceNumber int `json:"desire_instance_number"` 48 MinInstanceNumber int `json:"min_instance_number"` 49 MaxInstanceNumber int `json:"max_instance_number"` 50 CoolDownTime int `json:"cool_down_time"` 51 LBListenerID string `json:"lb_listener_id"` 52 LBaaSListeners []LBaaSListener `json:"lbaas_listeners"` 53 AvailableZones []string `json:"available_zones"` 54 Networks []Network `json:"networks"` 55 SecurityGroups []SecurityGroup `json:"security_groups"` 56 CreateTime string `json:"create_time"` 57 VpcID string `json:"vpc_id"` 58 Detail string `json:"detail"` 59 IsScaling bool `json:"is_scaling"` 60 HealthPeriodicAuditMethod string `json:"health_periodic_audit_method"` 61 HealthPeriodicAuditTime int `json:"health_periodic_audit_time"` 62 HealthPeriodicAuditGrace int `json:"health_periodic_audit_grace_period"` 63 InstanceTerminatePolicy string `json:"instance_terminate_policy"` 64 Notifications []string `json:"notifications"` 65 DeletePublicip bool `json:"delete_publicip"` 66 DeleteVolume bool `json:"delete_volume"` 67 CloudLocationID string `json:"cloud_location_id"` 68 ActivityType string `json:"activity_type"` 69 MultiAZPriorityPolicy string `json:"multi_az_priority_policy"` 70 Description string `json:"description"` 71 IamAgencyName string `json:"iam_agency_name"` 72 EnterpriseProjectID string `json:"enterprise_project_id"` 73 } 74 75 type Network struct { 76 ID string `json:"id"` 77 IPv6Enable bool `json:"ipv6_enable"` 78 IPv6BandWidth BandWidth `json:"ipv6_bandwidth"` 79 AllowedAddressPairs []AddressPair `json:"allowed_address_pairs"` 80 } 81 82 type BandWidth struct { 83 ID string `json:"id"` 84 } 85 86 type AddressPair struct { 87 IpAddress string `json:"ip_address"` 88 } 89 90 type SecurityGroup struct { 91 ID string `json:"id"` 92 } 93 94 type LBaaSListener struct { 95 ListenerID string `json:"listener_id"` 96 PoolID string `json:"pool_id"` 97 ProtocolPort int `json:"protocol_port"` 98 Weight int `json:"weight"` 99 } 100 101 type GroupPage struct { 102 pagination.SinglePageBase 103 } 104 105 // IsEmpty returns true if a ListResult contains no Volumes. 106 func (r GroupPage) IsEmpty() (bool, error) { 107 groups, err := r.Extract() 108 return len(groups) == 0, err 109 } 110 111 func (r GroupPage) Extract() ([]Group, error) { 112 var gs []Group 113 err := r.Result.ExtractIntoSlicePtr(&gs, "scaling_groups") 114 return gs, err 115 } 116 117 // UpdateResult is a struct from which can get the result of udpate method 118 type UpdateResult struct { 119 golangsdk.Result 120 } 121 122 // Extract will deserialize the result to group id with string 123 func (r UpdateResult) Extract() (string, error) { 124 var a struct { 125 ID string `json:"scaling_group_id"` 126 } 127 err := r.Result.ExtractInto(&a) 128 return a.ID, err 129 } 130 131 // ActionResult is the action result which is the result of enable or disable operations 132 type ActionResult struct { 133 golangsdk.ErrResult 134 }