Skip to content

Commit 212c80b

Browse files
author
Jeff McCormick
committed
add upgrade
1 parent 34db074 commit 212c80b

File tree

4 files changed

+225
-1
lines changed

4 files changed

+225
-1
lines changed

clusterservice/scaleservice.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package clusterservice
2+
3+
import (
4+
"encoding/json"
5+
log "github.com/Sirupsen/logrus"
6+
//"github.com/crunchydata/postgres-operator/tpr"
7+
"github.com/gorilla/mux"
8+
"net/http"
9+
)
10+
11+
type ScaleResponse struct {
12+
Results string
13+
}
14+
15+
type ScaleRequest struct {
16+
Name string
17+
}
18+
19+
// pgo scale mycluster --replica-count=1
20+
// parameters showsecrets
21+
// returns a ScaleResponse
22+
func ScaleClusterHandler(w http.ResponseWriter, r *http.Request) {
23+
log.Infoln("clusterservice.ScaleClusterHandler called")
24+
//log.Infoln("showsecrets=" + showsecrets)
25+
vars := mux.Vars(r)
26+
log.Infof(" vars are %v\n", vars)
27+
28+
switch r.Method {
29+
case "GET":
30+
log.Infoln("clusterservice.ScaleClusterHandler GET called")
31+
}
32+
33+
w.WriteHeader(http.StatusOK)
34+
w.Header().Set("Content-Type", "application/json")
35+
36+
resp := new(ScaleResponse)
37+
resp.Results = "ok it worked"
38+
39+
json.NewEncoder(w).Encode(resp)
40+
}

restclient.go

Lines changed: 111 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ import (
55
"encoding/json"
66
"fmt"
77
"github.com/crunchydata/postgres-operator/backupservice"
8+
"github.com/crunchydata/postgres-operator/cloneservice"
89
"github.com/crunchydata/postgres-operator/clusterservice"
910
"github.com/crunchydata/postgres-operator/policyservice"
11+
"github.com/crunchydata/postgres-operator/upgradeservice"
1012
//"github.com/crunchydata/postgres-operator/tpr"
1113
"log"
1214
"net/http"
@@ -25,7 +27,11 @@ func main() {
2527
//testShowCluster(true)
2628
//testShowBackup(true)
2729
//testShowPolicy(true)
28-
testCreatePolicy()
30+
//testCreatePolicy()
31+
//testCreateClone()
32+
//testScale()
33+
testShowUpgrade(true)
34+
testCreateUpgrade()
2935

3036
}
3137

@@ -232,3 +238,107 @@ func testCreatePolicy() {
232238
fmt.Printf("%v\n", resp)
233239

234240
}
241+
func testCreateClone() {
242+
url := "http://localhost:8080/clones"
243+
244+
cl := new(cloneservice.CreateCloneRequest)
245+
cl.Name = "newclone"
246+
jsonValue, _ := json.Marshal(cl)
247+
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonValue))
248+
if err != nil {
249+
log.Fatal("NewRequest: ", err)
250+
return
251+
}
252+
253+
req.Header.Set("Content-Type", "application/json")
254+
client := &http.Client{}
255+
resp, err := client.Do(req)
256+
if err != nil {
257+
log.Fatal("Do: ", err)
258+
return
259+
}
260+
fmt.Printf("%v\n", resp)
261+
262+
}
263+
264+
func testScale() {
265+
url := "http://localhost:8080/clusters/scale/somename"
266+
267+
req, err := http.NewRequest("GET", url, nil)
268+
if err != nil {
269+
log.Fatal("NewRequest: ", err)
270+
return
271+
}
272+
273+
client := &http.Client{}
274+
275+
resp, err := client.Do(req)
276+
if err != nil {
277+
log.Fatal("Do: ", err)
278+
return
279+
}
280+
defer resp.Body.Close()
281+
282+
var response clusterservice.ScaleResponse
283+
if err := json.NewDecoder(resp.Body).Decode(&response); err != nil {
284+
log.Println(err)
285+
}
286+
287+
fmt.Printf("test results %s\n", response.Results)
288+
289+
}
290+
func testShowUpgrade(deleteFlag bool) {
291+
url := "http://localhost:8080/upgrades/somename?showsecrets=true&other=thing"
292+
293+
action := "GET"
294+
if deleteFlag {
295+
action = "DELETE"
296+
fmt.Println("doing delete")
297+
}
298+
req, err := http.NewRequest(action, url, nil)
299+
if err != nil {
300+
log.Fatal("NewRequest: ", err)
301+
return
302+
}
303+
304+
client := &http.Client{}
305+
306+
resp, err := client.Do(req)
307+
if err != nil {
308+
log.Fatal("Do: ", err)
309+
return
310+
}
311+
312+
defer resp.Body.Close()
313+
314+
var response upgradeservice.ShowUpgradeResponse
315+
316+
if err := json.NewDecoder(resp.Body).Decode(&response); err != nil {
317+
log.Println(err)
318+
}
319+
320+
fmt.Println("Name = ", response.Items[0].Name)
321+
322+
}
323+
func testCreateUpgrade() {
324+
url := "http://localhost:8080/upgrades"
325+
326+
cl := new(upgradeservice.CreateUpgradeRequest)
327+
cl.Name = "newupgrae"
328+
jsonValue, _ := json.Marshal(cl)
329+
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonValue))
330+
if err != nil {
331+
log.Fatal("NewRequest: ", err)
332+
return
333+
}
334+
335+
req.Header.Set("Content-Type", "application/json")
336+
client := &http.Client{}
337+
resp, err := client.Do(req)
338+
if err != nil {
339+
log.Fatal("Do: ", err)
340+
return
341+
}
342+
fmt.Printf("%v\n", resp)
343+
344+
}

restserver.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ package main
33
import (
44
log "github.com/Sirupsen/logrus"
55
"github.com/crunchydata/postgres-operator/backupservice"
6+
"github.com/crunchydata/postgres-operator/cloneservice"
67
"github.com/crunchydata/postgres-operator/clusterservice"
78
"github.com/crunchydata/postgres-operator/policyservice"
9+
"github.com/crunchydata/postgres-operator/upgradeservice"
810
"github.com/gorilla/mux"
911
"net/http"
1012
)
@@ -13,12 +15,16 @@ func main() {
1315

1416
log.Infoln("restserver starts")
1517
r := mux.NewRouter()
18+
r.HandleFunc("/clones", cloneservice.CreateCloneHandler)
1619
r.HandleFunc("/policies", policyservice.CreatePolicyHandler)
1720
r.HandleFunc("/policies/{name}", policyservice.ShowPolicyHandler).Methods("GET", "DELETE")
1821
r.HandleFunc("/policies/apply/{name}", policyservice.ApplyPolicyHandler)
22+
r.HandleFunc("/upgrades", upgradeservice.CreateUpgradeHandler)
23+
r.HandleFunc("/upgrades/{name}", upgradeservice.ShowUpgradeHandler).Methods("GET", "DELETE")
1924
r.HandleFunc("/clusters", clusterservice.CreateClusterHandler)
2025
r.HandleFunc("/clusters/{name}", clusterservice.ShowClusterHandler).Methods("GET", "DELETE")
2126
r.HandleFunc("/clusters/test/{name}", clusterservice.TestClusterHandler)
27+
r.HandleFunc("/clusters/scale/{name}", clusterservice.ScaleClusterHandler)
2228
r.HandleFunc("/backups/{name}", backupservice.ShowBackupHandler).Methods("GET", "DELETE")
2329
log.Fatal(http.ListenAndServe(":8080", r))
2430
}

upgradeservice/upgradeservice.go

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package upgradeservice
2+
3+
import (
4+
"encoding/json"
5+
log "github.com/Sirupsen/logrus"
6+
//"github.com/crunchydata/postgres-operator/tpr"
7+
"github.com/gorilla/mux"
8+
"net/http"
9+
)
10+
11+
type UpgradeDetail struct {
12+
Name string
13+
//deployments
14+
//replicasets
15+
//pods
16+
//services
17+
//secrets
18+
}
19+
type ShowUpgradeResponse struct {
20+
Items []UpgradeDetail
21+
}
22+
23+
type CreateUpgradeRequest struct {
24+
Name string
25+
}
26+
27+
// pgo upgrade mycluster
28+
// parameters --upgrade-type
29+
// parameters --ccp-image-tag
30+
func CreateUpgradeHandler(w http.ResponseWriter, r *http.Request) {
31+
log.Infoln("upgradeservice.CreateUpgradeHandler called")
32+
var request CreateUpgradeRequest
33+
_ = json.NewDecoder(r.Body).Decode(&request)
34+
35+
log.Infoln("upgradeservice.CreateUpgradeHandler got request " + request.Name)
36+
}
37+
38+
// pgo show upgrade
39+
// pgo delete myupgrade
40+
// parameters showsecrets
41+
// parameters selector
42+
// parameters namespace
43+
// parameters postgresversion
44+
// returns a ShowUpgradeResponse
45+
func ShowUpgradeHandler(w http.ResponseWriter, r *http.Request) {
46+
log.Infoln("upgradeservice.ShowUpgradeHandler called")
47+
//log.Infoln("showsecrets=" + showsecrets)
48+
vars := mux.Vars(r)
49+
log.Infof(" vars are %v\n", vars)
50+
51+
switch r.Method {
52+
case "GET":
53+
log.Infoln("upgradeservice.ShowUpgradeHandler GET called")
54+
case "DELETE":
55+
log.Infoln("upgradeservice.ShowUpgradeHandler DELETE called")
56+
}
57+
58+
w.WriteHeader(http.StatusOK)
59+
w.Header().Set("Content-Type", "application/json")
60+
61+
resp := new(ShowUpgradeResponse)
62+
resp.Items = []UpgradeDetail{}
63+
c := UpgradeDetail{}
64+
c.Name = "someupgrade"
65+
resp.Items = append(resp.Items, c)
66+
67+
json.NewEncoder(w).Encode(resp)
68+
}

0 commit comments

Comments
 (0)