diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..a3711939d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch Package", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "main.go", + "args": [ + "dump", + ] + } + ] +} diff --git a/cmd/file_convert.go b/cmd/file_convert.go index 4c2ccf50c..28096d50b 100644 --- a/cmd/file_convert.go +++ b/cmd/file_convert.go @@ -13,12 +13,14 @@ import ( ) var ( - convertCmdSourceFormat string - convertCmdDestinationFormat string // konnect/kong-gateway-3.x/etc - convertCmdInputFile string - convertCmdOutputFile string - convertCmdAssumeYes bool - convertCmdStateFormat string // yaml/json output + convertCmdSourceFormat string + convertCmdDestinationFormat string // konnect/kong-gateway-3.x/etc + convertCmdInputFile string + convertCmdOutputFile string + convertCmdInputFileDeprecated string + convertCmdOutputFileDeprecated string + convertCmdAssumeYes bool + convertCmdStateFormat string // yaml/json output ) func executeConvert(_ *cobra.Command, _ []string) error { @@ -91,6 +93,8 @@ func newConvertCmd(deprecated bool) *cobra.Command { if deprecated { short = "[deprecated] use 'file convert' instead" execute = func(cmd *cobra.Command, args []string) error { + convertCmdInputFile = convertCmdInputFileDeprecated + convertCmdOutputFile = convertCmdOutputFileDeprecated cprint.UpdatePrintf("Warning: 'deck convert' is DEPRECATED and will be removed in a future version. " + "Use 'deck file convert' instead.\n") return executeConvert(cmd, args) @@ -115,10 +119,17 @@ can be converted into a 'kong-gateway-3.x' configuration file.`, fmt.Sprintf("format of the source file, allowed formats: %v", sourceFormats)) convertCmd.Flags().StringVar(&convertCmdDestinationFormat, "to", "", fmt.Sprintf("desired format of the output, allowed formats: %v", destinationFormats)) - convertCmd.Flags().StringVar(&convertCmdInputFile, "input-file", fileInDefault, - "configuration file to be converted. Use `-` to read from stdin.") - convertCmd.Flags().StringVarP(&convertCmdOutputFile, "output-file", "o", fileOutDefault, - "file to write configuration to after conversion. Use `-` to write to stdout.") + if deprecated { + convertCmd.Flags().StringVar(&convertCmdInputFileDeprecated, "input-file", fileInDefault, + "configuration file to be converted. Use `-` to read from stdin.") + convertCmd.Flags().StringVarP(&convertCmdOutputFileDeprecated, "output-file", "o", fileOutDefault, + "file to write configuration to after conversion. Use `-` to write to stdout.") + } else { + convertCmd.Flags().StringVar(&convertCmdInputFile, "input-file", fileInDefault, + "configuration file to be converted. Use `-` to read from stdin.") + convertCmd.Flags().StringVarP(&convertCmdOutputFile, "output-file", "o", fileOutDefault, + "file to write configuration to after conversion. Use `-` to write to stdout.") + } convertCmd.Flags().BoolVar(&convertCmdAssumeYes, "yes", false, "assume `yes` to prompts and run non-interactively.") convertCmd.Flags().StringVar(&convertCmdStateFormat, "format", diff --git a/cmd/gateway_dump.go b/cmd/gateway_dump.go index 95637646a..ebdf7f32d 100644 --- a/cmd/gateway_dump.go +++ b/cmd/gateway_dump.go @@ -17,11 +17,12 @@ import ( const defaultFileOutName = "kong" var ( - dumpCmdKongStateFile string - dumpCmdStateFormat string - dumpWorkspace string - dumpAllWorkspaces bool - dumpWithID bool + dumpCmdKongStateFileDeprecated string + dumpCmdKongStateFile string + dumpCmdStateFormat string + dumpWorkspace string + dumpAllWorkspaces bool + dumpWithID bool ) func listWorkspaces(ctx context.Context, client *kong.Client) ([]string, error) { @@ -149,6 +150,7 @@ func newDumpCmd(deprecated bool) *cobra.Command { if deprecated { short = "[deprecated] use 'gateway dump' instead" execute = func(cmd *cobra.Command, args []string) error { + dumpCmdKongStateFile = dumpCmdKongStateFileDeprecated cprint.UpdatePrintf("Warning: 'deck dump' is DEPRECATED and will be removed in a future version. " + "Use 'deck gateway dump' instead.\n") return executeDump(cmd, args) @@ -168,9 +170,15 @@ configure Kong.`, RunE: execute, } - dumpCmd.Flags().StringVarP(&dumpCmdKongStateFile, "output-file", "o", - fileOutDefault, "file to which to write Kong's configuration."+ - "Use `-` to write to stdout.") + if deprecated { + dumpCmd.Flags().StringVarP(&dumpCmdKongStateFileDeprecated, "output-file", "o", + fileOutDefault, "file to which to write Kong's configuration."+ + "Use `-` to write to stdout.") + } else { + dumpCmd.Flags().StringVarP(&dumpCmdKongStateFile, "output-file", "o", + fileOutDefault, "file to which to write Kong's configuration."+ + "Use `-` to write to stdout.") + } dumpCmd.Flags().StringVar(&dumpCmdStateFormat, "format", "yaml", "output file format: json or yaml.") dumpCmd.Flags().BoolVar(&dumpWithID, "with-id", diff --git a/kong.yaml b/kong.yaml deleted file mode 100644 index 4b1bc80c1..000000000 --- a/kong.yaml +++ /dev/null @@ -1,141 +0,0 @@ -_info: - select_tags: - - managed-by-deck - - org-unit-42 -services: -- name: svc1 - host: mockbin.org - tags: - - team-svc1 - routes: - - name: r1 - https_redirect_status_code: 301 - paths: - - /r1 -- name: svc2 - host: mockbin.org - routes: - - name: r2 - https_redirect_status_code: 301 - paths: - - /r2 -- name: svc3 - host: mockbin.org - port: 80 - routes: - - name: r3 - https_redirect_status_code: 301 - paths: - - /r3 - methods: - - GET -upstreams: -- name: upstream1 - algorithm: round-robin - targets: - - target: 198.51.100.11:80 - - target: 198.51.100.12:80 - - target: 198.51.100.13:80 -certificates: -- id: 13c562a1-191c-4464-9b18-e5222b46035b - cert: | - -----BEGIN CERTIFICATE----- - MIIC1jCCAb4CCQCt23nwvxSCvjANBgkqhkiG9w0BAQsFADAtMRYwFAYDVQQDDA0q - LmV4YW1wbGUuY29tMRMwEQYDVQQKDAprb25naHEub3JnMB4XDTE4MTIzMTIwMTkw - MVoXDTE5MTIzMTIwMTkwMVowLTEWMBQGA1UEAwwNKi5leGFtcGxlLmNvbTETMBEG - A1UECgwKa29uZ2hxLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB - AKj/2r1AXo9x+2Csrd0SHbpnzuW+xYqgsd+YA9ZrZNV7SZGSbaZymsRMz8wg5OIU - iUik2GM1749/lYvojLFStBPy9UY/gd++5f3wLp4xHiI+IU2XQ97otXKGfyh36RmN - dKDqPLN8BG3R346s/y1GOulFvLthYmZVYF9ufHiqimfEDSbTt79P5C3X0Rw/afK1 - GjHEJPCB/XkZ6lkcEyL6LqZI5oBigDqa9hI/nWLxEzfm8pgosiS38p9TAijlOkpm - tX2p2b1pktlNIy3rxsqj6IynN9Wc7FpV1N4HoPKV7vQQ08hjwW6WfanVthaaJosj - Vr2TBCJ1ltAmsb+5B2VPYVkCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAnByTyQfV - 3LkwuoWS57CWcqbNw/cHnv/ChzmIv+6mIXvDBSvCgrPZIWCpaCfYRG6R51E44fr/ - 8V1AKT0Zt15DjrXEEcIGQgsIDO91/wlL091fTAUzSbL0yt7HTlm8sX6xndPNAZrq - cfcIPVMxknfqPy2VqS4IrNC03pHkDKtokphBjVUlkiWsdcq+fHYbS2xL2d1Da/uN - hX/iwgo+v5gOF5xtaXx7D7L3Cf+MHb/MOXWPfYXNiTpSBVX8/Kx5RP+QLI16nWvw - lrijTlXZFR8NIZBrCo/QZ2cNbUAbN3R0n+/kMFubxBL8WEm6Qhi9jBjbJeDMspd8 - C+/TZJQMpx5vyA== - -----END CERTIFICATE----- - key: | - -----BEGIN PRIVATE KEY----- - MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCo/9q9QF6Pcftg - rK3dEh26Z87lvsWKoLHfmAPWa2TVe0mRkm2mcprETM/MIOTiFIlIpNhjNe+Pf5WL - 6IyxUrQT8vVGP4HfvuX98C6eMR4iPiFNl0Pe6LVyhn8od+kZjXSg6jyzfARt0d+O - rP8tRjrpRby7YWJmVWBfbnx4qopnxA0m07e/T+Qt19EcP2nytRoxxCTwgf15GepZ - HBMi+i6mSOaAYoA6mvYSP51i8RM35vKYKLIkt/KfUwIo5TpKZrV9qdm9aZLZTSMt - 68bKo+iMpzfVnOxaVdTeB6Dyle70ENPIY8Fuln2p1bYWmiaLI1a9kwQidZbQJrG/ - uQdlT2FZAgMBAAECggEAVnyRcda2Tcy0K7ZTR9aUlie370VhDN/OB7JhDGNreAEf - FjuMl+kAoUL5+OpAmB6QXzfVcXhRv+s4GiCJl9nORINK2Id5rIqiYwF+qgBS/o0z - N+UYm8QVz6Va/9fV1/jXXd5h8Cygi58jPH32HTJaxbSlsHNXCy3YIx6E3q/QIueR - 6ZdSXPqMEqxEU19M9jW8UeiRFrpmcyYxVpfxYIY/+O9lYjSpaeLs7hZeCP9PqWXA - Sxz2CnHZ8BcsDxAyuoHoVw+kjMpUMvA3sD4lwkV8BAYzfLmQf6PR83SFNsrE8XYu - /8WnQuCuytcl8Zg55R6tGCvf6Wyyf+MDRPwv/43QMQKBgQDbqK9Dq54k+EHgSNnP - K6AhNjFd6aqcNC1kom/sSlWBnuA/BEqJMECr8S2dYvzONUPPfX5NNUjB4Vw3Qw7a - pUgKuCQoVpzpZs5m1bk78itWDtA84LjkXfdejnUXVw/aVxLCM5QV9aEkm/dEWWMI - P1WTYVoWoZCLlEE08q0AvZQcdQKBgQDE9ZCmc6ncmhnQftuRj5PnXG2a79MLCT61 - sCEBDVvkcUJVqbzwGRLwRkdIzLgvmiuP+SukHgyfr8/RXG99xEW/q7NDrtEcqfXP - 19QXwOIp5NwDnOXyAlXiyZ50fCE2tSo2wP485+NIhmKj5Zt6y/DL6Qbc5k73XmK4 - KX5Ej15k1QKBgQCc6KeiIFLMt+Ze78tfORue/dZP7p3oDUGr1Hk9AnCIMlSfz1Hr - I+Per17VQaOzLcttyYhSYNDDZld4RlezCkQnHBkAE7bs53pjbSJv1vLr+5L3GdQZ - laIiEoNEE/YIExEcVrne4eKlgyAj2/JpLszThcRTzD+z5UibKQs6LzJBDQKBgDVa - dAGzCUt57w48nwvyQdWFgydaWef+bB9Zg8c+MCtUxuxfm4/Kqwetcff1hNtYPv60 - N68weKj1Pi1vhcAi3+YJA/mMrJbAL5dK1uhMVreUiEjuQpfpLAzQIv1Y9sJUFwhY - BUbIZhgqVyQguZptDmCeUj6aoL9/sOxESTEXSTG1AoGBAMQ5iJZMsdLCERv0+6Y1 - F/t/YSW8cugB3vdV9jHZuosoprz48p92pYP8OdQc70H5hZt53hoYNgYFSd+MU6H1 - hJCaXTsiP4IUmBjiwzSp3o1ctP8lWvnyJpAadYdDhaDaAAoaMjCo9cm5OMwc8t8x - hwAPXV2cgWH8fPcT9NLAcwWk - -----END PRIVATE KEY----- - tags: - - cloudops-managed - snis: - - name: demo1.example.com - - name: demo2.example.com - - name: demo3.example.com -plugins: -- name: prometheus - enabled: true - protocols: - - http - - https -consumers: -- username: harry - keyauth_credentials: - - key: iwb6Djkk4HhUlOCmLilDIKh6nZrn90ts - hmacauth_credentials: - - username: hmac-user - secret: yeNZBeqCuk0D3H85VX77Umacf91MwqRo - jwt_secrets: - - algorithm: HS256 - key: MKWeR0nu9OAUR9HrjpUG82Hbfz7ZXsIw - secret: 6gkrxTKAraykMSpmnLNEGiEE3Yz8XL6U - basicauth_credentials: - - username: user1 - password: this-password-cant-be-changed - acls: - - group: foo-group -- username: yolo - tags: - - internal-user - plugins: - - name: rate-limiting - config: - day: null - fault_tolerant: true - hide_client_headers: false - hour: null - limit_by: consumer - minute: 10 - month: null - policy: redis - redis_database: 0 - redis_host: redis.common.svc - redis_password: null - redis_port: 6379 - redis_timeout: 2000 - second: null - year: null - enabled: true - protocols: - - http - - https