|
1 | 1 | package kotsclient
|
2 | 2 |
|
3 | 3 | import (
|
4 |
| - "time" |
| 4 | + "fmt" |
| 5 | + "net/http" |
5 | 6 |
|
6 | 7 | "github.com/pkg/errors"
|
7 | 8 | "github.com/replicatedhq/replicated/pkg/graphql"
|
8 | 9 | "github.com/replicatedhq/replicated/pkg/types"
|
9 |
| - "github.com/replicatedhq/replicated/pkg/util" |
10 | 10 | )
|
11 | 11 |
|
12 | 12 | type GraphQLResponseKotsCreateRelease struct {
|
@@ -119,75 +119,51 @@ func (c *GraphQLClient) UpdateRelease(appID string, sequence int64, multiyaml st
|
119 | 119 | return nil
|
120 | 120 | }
|
121 | 121 |
|
122 |
| -const allKotsReleases = ` |
123 |
| - query allKotsReleases($appId: ID!, $pageSize: Int, $currentPage: Int) { |
124 |
| - allKotsReleases(appId: $appId, pageSize: $pageSize, currentPage: $currentPage) { |
125 |
| - sequence |
126 |
| - channelSequence |
127 |
| - created |
128 |
| - updated |
129 |
| - releasedAt |
130 |
| - releaseNotes |
131 |
| - channels { |
132 |
| - id |
133 |
| - name |
134 |
| - currentVersion |
135 |
| - numReleases |
136 |
| - } |
137 |
| - isReleaseNotEditable |
138 |
| - } |
139 |
| - } |
140 |
| -` |
141 |
| - |
142 |
| -func (c *GraphQLClient) ListReleases(appID string) ([]types.ReleaseInfo, error) { |
143 |
| - response := GraphQLResponseListReleases{} |
144 |
| - |
145 |
| - request := graphql.Request{ // todo: move to v3 api and make paged |
146 |
| - Query: allKotsReleases, |
147 |
| - Variables: map[string]interface{}{ |
148 |
| - "appId": appID, |
149 |
| - }, |
150 |
| - } |
151 |
| - |
152 |
| - if err := c.ExecuteRequest(request, &response); err != nil { |
153 |
| - return nil, err |
154 |
| - } |
155 |
| - |
156 |
| - location, err := time.LoadLocation("Local") |
157 |
| - if err != nil { |
158 |
| - return nil, err |
159 |
| - } |
160 |
| - |
161 |
| - releaseInfos := make([]types.ReleaseInfo, 0, 0) |
162 |
| - for _, kotsRelease := range response.Data.KotsReleases { |
163 |
| - activeChannels := make([]types.Channel, 0, 0) |
164 |
| - createdAt, err := util.ParseTime(kotsRelease.CreatedAt) |
| 122 | +func (c *VendorV3Client) ListReleases(appID string) ([]types.ReleaseInfo, error) { |
| 123 | + allReleases := []types.ReleaseInfo{} |
| 124 | + resp := types.ListReleasesResponse{} |
| 125 | + done := false |
| 126 | + page := 0 |
| 127 | + for !done { |
| 128 | + path := fmt.Sprintf("/v3/app/%s/releases?currentPage=%d&pageSize=20", appID, page) |
| 129 | + err := c.DoJSON("GET", path, http.StatusOK, nil, &resp) |
165 | 130 | if err != nil {
|
166 |
| - return nil, err |
| 131 | + done = true |
| 132 | + continue |
167 | 133 | }
|
168 |
| - |
169 |
| - for _, kotsReleaseChannel := range kotsRelease.Channels { |
170 |
| - activeChannel := types.Channel{ |
171 |
| - ID: kotsReleaseChannel.ID, |
172 |
| - Name: kotsReleaseChannel.Name, |
| 134 | + page += 1 |
| 135 | + for _, release := range resp.Releases { |
| 136 | + activeChannels := make([]types.Channel, 0, 0) |
| 137 | + |
| 138 | + for _, kotsReleaseChannel := range release.Channels { |
| 139 | + if kotsReleaseChannel.IsArchived { |
| 140 | + continue |
| 141 | + } |
| 142 | + activeChannel := types.Channel{ |
| 143 | + ID: kotsReleaseChannel.ID, |
| 144 | + Name: kotsReleaseChannel.Name, |
| 145 | + } |
| 146 | + activeChannels = append(activeChannels, activeChannel) |
173 | 147 | }
|
174 |
| - activeChannels = append(activeChannels, activeChannel) |
175 | 148 |
|
176 |
| - } |
177 |
| - releaseInfo := types.ReleaseInfo{ |
178 |
| - AppID: appID, |
179 |
| - CreatedAt: createdAt.In(location), |
180 |
| - EditedAt: time.Time{}, // not supported |
181 |
| - Editable: false, |
182 |
| - Sequence: kotsRelease.Sequence, |
183 |
| - Version: "n/a", |
184 |
| - ActiveChannels: activeChannels, |
| 149 | + |
| 150 | + newReleaseInfo := types.ReleaseInfo{ |
| 151 | + ActiveChannels: activeChannels, |
| 152 | + AppID: release.AppID, |
| 153 | + CreatedAt: release.CreatedAt, |
| 154 | + Editable: !release.IsReleaseNotEditable, |
| 155 | + Sequence: release.Sequence, |
| 156 | + } |
| 157 | + allReleases = append(allReleases, newReleaseInfo) |
185 | 158 | }
|
186 | 159 |
|
187 |
| - releaseInfos = append(releaseInfos, releaseInfo) |
| 160 | + if len(resp.Releases) == 0 { |
| 161 | + done = true |
| 162 | + continue |
| 163 | + } |
188 | 164 | }
|
189 | 165 |
|
190 |
| - return releaseInfos, nil |
| 166 | + return allReleases, nil |
191 | 167 | }
|
192 | 168 |
|
193 | 169 | const promoteKotsRelease = `
|
|
0 commit comments