[gp-cli] add command to extend workspace timeout

This commit is contained in:
mustard 2022-06-13 09:53:21 +00:00 committed by Robo Quat
parent 3c10cc0cc4
commit a732374b3d
3 changed files with 155 additions and 0 deletions

View File

@ -0,0 +1,47 @@
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License-AGPL.txt in the project root for license information.
package cmd
import (
"context"
"time"
gitpod "github.com/gitpod-io/gitpod/gitpod-cli/pkg/gitpod"
serverapi "github.com/gitpod-io/gitpod/gitpod-protocol"
"github.com/sourcegraph/jsonrpc2"
"github.com/spf13/cobra"
)
// extendTimeoutCmd extend timeout of current workspace
var extendTimeoutCmd = &cobra.Command{
Use: "extend",
Short: "Extend timeout of current workspace",
Run: func(cmd *cobra.Command, args []string) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
wsInfo, err := gitpod.GetWSInfo(ctx)
if err != nil {
fail(err.Error())
}
client, err := gitpod.ConnectToServer(ctx, wsInfo, []string{
"function:setWorkspaceTimeout",
"resource:workspace::" + wsInfo.WorkspaceId + "::get/update",
})
if err != nil {
fail(err.Error())
}
var tmp serverapi.WorkspaceTimeoutDuration = serverapi.WorkspaceTimeoutDuration180m
if _, err := client.SetWorkspaceTimeout(ctx, wsInfo.WorkspaceId, &tmp); err != nil {
if err, ok := err.(*jsonrpc2.Error); ok && err.Code == serverapi.PLAN_PROFESSIONAL_REQUIRED {
fail("Cannot extend workspace timeout for current plan, please upgrade your plan")
}
fail(err.Error())
}
},
}
func init() {
timeoutCmd.AddCommand(extendTimeoutCmd)
}

View File

@ -0,0 +1,19 @@
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License-AGPL.txt in the project root for license information.
package cmd
import (
"github.com/spf13/cobra"
)
// timeoutCmd commands collection
var timeoutCmd = &cobra.Command{
Use: "timeout",
Short: "A collection of commands for workspace timeout",
}
func init() {
rootCmd.AddCommand(timeoutCmd)
}

View File

@ -0,0 +1,89 @@
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License-AGPL.txt in the project root for license information.
package protocol
const (
// 400 Unauthorized
BAD_REQUEST = 400
// 401 Unauthorized
NOT_AUTHENTICATED = 401
// 402 Payment Required
NOT_ENOUGH_CREDIT = 402
// 403 Forbidden
PERMISSION_DENIED = 403
// 404 Not Found
NOT_FOUND = 404
// 409 Conflict (e.g. already existing)
CONFLICT = 409
// 410 No User
SETUP_REQUIRED = 410
// 429 Too Many Requests
TOO_MANY_REQUESTS = 429
// 430 Repository not whitelisted (custom status code)
REPOSITORY_NOT_WHITELISTED = 430
// 460 Context Parse Error (custom status code)
CONTEXT_PARSE_ERROR = 460
// 461 Invalid gitpod yml
INVALID_GITPOD_YML = 461
// 450 Payment error
PAYMENT_ERROR = 450
// 470 User Blocked (custom status code)
USER_BLOCKED = 470
// 471 User Deleted (custom status code)
USER_DELETED = 471
// 472 Terms Acceptance Required (custom status code)
USER_TERMS_ACCEPTANCE_REQUIRED = 472
// 480 Plan does not allow private repos
PLAN_DOES_NOT_ALLOW_PRIVATE_REPOS = 480
// 481 Professional plan is required for this operation
PLAN_PROFESSIONAL_REQUIRED = 481
// 485 Plan is only allowed for students
PLAN_ONLY_ALLOWED_FOR_STUDENTS = 485
// 490 Too Many Running Workspace
TOO_MANY_RUNNING_WORKSPACES = 490
// 500 Internal Server Error
INTERNAL_SERVER_ERROR = 500
// 501 EE Feature
EE_FEATURE = 501
// 555 EE License Required
EE_LICENSE_REQUIRED = 555
// 601 SaaS Feature
SAAS_FEATURE = 601
// 610 Invalid Team Subscription Quantity
TEAM_SUBSCRIPTION_INVALID_QUANTITY = 610
// 620 Team Subscription Assignment Failed
TEAM_SUBSCRIPTION_ASSIGNMENT_FAILED = 620
// 630 Snapshot Error
SNAPSHOT_ERROR = 630
// 640 Headless logs are not available (yet)
HEADLESS_LOG_NOT_YET_AVAILABLE = 640
)