Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package rancher-cli for openSUSE:Factory 
checked in at 2022-03-25 21:54:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rancher-cli (Old)
 and      /work/SRC/openSUSE:Factory/.rancher-cli.new.1900 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rancher-cli"

Fri Mar 25 21:54:46 2022 rev:2 rq:964807 version:2.6.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/rancher-cli/rancher-cli.changes  2022-01-26 
21:28:20.417431521 +0100
+++ /work/SRC/openSUSE:Factory/.rancher-cli.new.1900/rancher-cli.changes        
2022-03-25 21:55:02.274299021 +0100
@@ -1,0 +2,8 @@
+Fri Mar 25 09:13:04 UTC 2022 - ka...@b1-systems.de
+
+- Update to version 2.6.4:
+  * Transform all keys to JSON format as specified by struct tags for RKE 
config values
+  * Add s390x arch support
+- versions 2.6.1, 2.6.2 and 2.6.3 are not existing
+
+-------------------------------------------------------------------

Old:
----
  cli-2.6.0.tar.gz

New:
----
  cli-2.6.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rancher-cli.spec ++++++
--- /var/tmp/diff_new_pack.d5PXWf/_old  2022-03-25 21:55:03.354300048 +0100
+++ /var/tmp/diff_new_pack.d5PXWf/_new  2022-03-25 21:55:03.374300067 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package rancher-cli
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %define __arch_install_post export NO_BRP_STRIP_DEBUG=true
 
 Name:           rancher-cli
-Version:        2.6.0
+Version:        2.6.4
 Release:        0
 Summary:        Rancher CLI
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.d5PXWf/_old  2022-03-25 21:55:03.414300106 +0100
+++ /var/tmp/diff_new_pack.d5PXWf/_new  2022-03-25 21:55:03.414300106 +0100
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/rancher/cli</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v2.6.0</param>
+    <param name="revision">v2.6.4</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="changesgenerate">enable</param>
     <param name="versionrewrite-pattern">v(.*)</param>
@@ -16,7 +16,7 @@
     <param name="compression">gz</param>
   </service>
   <service name="go_modules" mode="disabled">
-    <param name="archive">cli-2.6.0.tar.gz</param>
+    <param name="archive">cli-2.6.4.tar.gz</param>
   </service>
 </services>
 

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.d5PXWf/_old  2022-03-25 21:55:03.438300128 +0100
+++ /var/tmp/diff_new_pack.d5PXWf/_new  2022-03-25 21:55:03.438300128 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/rancher/cli</param>
-              <param 
name="changesrevision">a9204188e36f850eb1407eb5cad884f0f6daf3ac</param></service></servicedata>
+              <param 
name="changesrevision">27cb4fdbd27167b8c06b0c6f3318c69fd555948f</param></service></servicedata>
 (No newline at EOF)
 

++++++ cli-2.6.0.tar.gz -> cli-2.6.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.6.0/cmd/cluster.go new/cli-2.6.4/cmd/cluster.go
--- old/cli-2.6.0/cmd/cluster.go        2021-11-10 22:45:16.000000000 +0100
+++ new/cli-2.6.4/cmd/cluster.go        2022-02-18 21:28:45.000000000 +0100
@@ -250,6 +250,9 @@
        if ctx.NArg() == 0 {
                return cli.ShowSubcommandHelp(ctx)
        }
+       if ctx.Bool("import") {
+               return clusterImport(ctx)
+       }
        c, err := GetClient(ctx)
        if err != nil {
                return err
@@ -266,23 +269,12 @@
                }
        }
 
-       rkeConfig, err := getRKEConfig(ctx)
+       config, err := getClusterConfig(ctx)
        if err != nil {
                return err
        }
 
-       clusterConfig := &managementClient.Cluster{
-               Name:                          ctx.Args().First(),
-               Description:                   ctx.String("description"),
-               RancherKubernetesEngineConfig: rkeConfig,
-       }
-
-       if ctx.String("psp-default-policy") != "" {
-               clusterConfig.DefaultPodSecurityPolicyTemplateID = 
ctx.String("psp-default-policy")
-       }
-
-       createdCluster, err := c.ManagementClient.Cluster.Create(clusterConfig)
-
+       createdCluster, err := c.ManagementClient.Cluster.Create(config)
        if err != nil {
                return err
        }
@@ -752,48 +744,61 @@
        return options
 }
 
-func getRKEConfig(ctx *cli.Context) 
(*managementClient.RancherKubernetesEngineConfig, error) {
-       if ctx.Bool("import") {
-               return nil, nil
+func getClusterConfig(ctx *cli.Context) (*managementClient.Cluster, error) {
+       config := managementClient.Cluster{
+               RancherKubernetesEngineConfig: 
new(managementClient.RancherKubernetesEngineConfig),
        }
 
-       rkeConfig := &managementClient.RancherKubernetesEngineConfig{}
-
        if ctx.String("rke-config") != "" {
                bytes, err := readFileReturnJSON(ctx.String("rke-config"))
                if err != nil {
                        return nil, err
                }
-               bytes, err = fixTopLevelKeys(bytes)
-               if err != nil {
+
+               var jsonObject map[string]interface{}
+               if err = json.Unmarshal(bytes, &jsonObject); err != nil {
                        return nil, err
                }
-               err = json.Unmarshal(bytes, &rkeConfig)
+
+               // Most values in RancherKubernetesEngineConfig are defined 
with struct tags for both JSON and YAML in camelCase.
+               // Changing the tags will be a breaking change. For proper 
deserialization, we must convert all keys to camelCase.
+               // Note that we ignore kebab-case keys. Users themselves should 
ensure any relevant keys
+               // (especially top-level keys in `services`, like `kube-api` or 
`kube-controller`) are camelCase or snake-case in cluster config.
+               convertSnakeCaseKeysToCamelCase(jsonObject)
+
+               marshalled, err := json.Marshal(jsonObject)
                if err != nil {
                        return nil, err
                }
+               if err = json.Unmarshal(marshalled, &config); err != nil {
+                       return nil, err
+               }
        }
 
+       config.Name = ctx.Args().First()
+       config.Description = ctx.String("description")
+
        ignoreDockerVersion := ctx.BoolT("disable-docker-version")
-       rkeConfig.IgnoreDockerVersion = &ignoreDockerVersion
+       config.RancherKubernetesEngineConfig.IgnoreDockerVersion = 
&ignoreDockerVersion
 
        if ctx.String("k8s-version") != "" {
-               rkeConfig.Version = ctx.String("k8s-version")
+               config.RancherKubernetesEngineConfig.Version = 
ctx.String("k8s-version")
        }
 
        if ctx.String("network-provider") != "" {
-               rkeConfig.Network = &managementClient.NetworkConfig{
+               config.RancherKubernetesEngineConfig.Network = 
&managementClient.NetworkConfig{
                        Plugin: ctx.String("network-provider"),
                }
        }
 
        if ctx.String("psp-default-policy") != "" {
-               rkeConfig.Services = &managementClient.RKEConfigServices{
+               config.DefaultPodSecurityPolicyTemplateID = 
ctx.String("psp-default-policy")
+               config.RancherKubernetesEngineConfig.Services = 
&managementClient.RKEConfigServices{
                        KubeAPI: &managementClient.KubeAPIService{
                                PodSecurityPolicy: true,
                        },
                }
        }
 
-       return rkeConfig, nil
+       return &config, nil
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.6.0/cmd/common.go new/cli-2.6.4/cmd/common.go
--- old/cli-2.6.0/cmd/common.go 2021-11-10 22:45:16.000000000 +0100
+++ new/cli-2.6.4/cmd/common.go 2022-02-18 21:28:45.000000000 +0100
@@ -554,23 +554,6 @@
        return "", "", fmt.Errorf("Unable to extract clusterid and projectid 
from [%s]", id)
 }
 
-func fixTopLevelKeys(bytes []byte) ([]byte, error) {
-       old := map[string]interface{}{}
-       new := map[string]interface{}{}
-
-       err := json.Unmarshal(bytes, &old)
-       if err != nil {
-               return nil, fmt.Errorf("error unmarshalling: %v", err)
-       }
-
-       for key, val := range old {
-               newKey := convert.ToJSONKey(key)
-               new[newKey] = val
-       }
-
-       return json.Marshal(new)
-}
-
 // Return a JSON blob of the file at path
 func readFileReturnJSON(path string) ([]byte, error) {
        file, err := ioutil.ReadFile(path)
@@ -584,6 +567,23 @@
        return yaml.YAMLToJSON(file)
 }
 
+// renameKeys renames the keys in a given map of arbitrary depth with a 
provided function for string keys.
+func renameKeys(input map[string]interface{}, f func(string) string) {
+       for k, v := range input {
+               delete(input, k)
+               newKey := f(k)
+               input[newKey] = v
+               if innerMap, ok := v.(map[string]interface{}); ok {
+                       renameKeys(innerMap, f)
+               }
+       }
+}
+
+// convertSnakeCaseKeysToCamelCase takes a map and recursively transforms all 
snake_case keys into camelCase keys.
+func convertSnakeCaseKeysToCamelCase(input map[string]interface{}) {
+       renameKeys(input, convert.ToJSONKey)
+}
+
 // Return true if the first non-whitespace bytes in buf is prefix.
 func hasPrefix(buf []byte, prefix []byte) bool {
        trim := bytes.TrimLeftFunc(buf, unicode.IsSpace)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.6.0/cmd/common_test.go 
new/cli-2.6.4/cmd/common_test.go
--- old/cli-2.6.0/cmd/common_test.go    2021-11-10 22:45:16.000000000 +0100
+++ new/cli-2.6.4/cmd/common_test.go    2022-02-18 21:28:45.000000000 +0100
@@ -30,6 +30,35 @@
        testParse(c, "c-m-123:p-12345", "", "", true)
 }
 
+func (s *CommonTestSuite) TestConvertSnakeCaseKeysToCamelCase(c *check.C) {
+       cases := []struct {
+               input   map[string]interface{}
+               renamed map[string]interface{}
+       }{
+               {
+                       map[string]interface{}{"foo_bar": "hello"},
+                       map[string]interface{}{"fooBar": "hello"},
+               },
+               {
+                       map[string]interface{}{"fooBar": "hello"},
+                       map[string]interface{}{"fooBar": "hello"},
+               },
+               {
+                       map[string]interface{}{"foobar": "hello", "some_key": 
"valueUnmodified", "bar-baz": "bar-baz"},
+                       map[string]interface{}{"foobar": "hello", "someKey": 
"valueUnmodified", "bar-baz": "bar-baz"},
+               },
+               {
+                       map[string]interface{}{"foo_bar": "hello", 
"backup_config": map[string]interface{}{"hello_world": true}, "config_id": 123},
+                       map[string]interface{}{"fooBar": "hello", 
"backupConfig": map[string]interface{}{"helloWorld": true}, "configId": 123},
+               },
+       }
+
+       for _, tc := range cases {
+               convertSnakeCaseKeysToCamelCase(tc.input)
+               c.Assert(tc.input, check.DeepEquals, tc.renamed)
+       }
+}
+
 func testParse(c *check.C, testID, expectedCluster, expectedProject string, 
errorExpected bool) {
        actualCluster, actualProject, actualErr := 
parseClusterAndProjectID(testID)
        c.Assert(actualCluster, check.Equals, expectedCluster)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cli-2.6.0/scripts/build new/cli-2.6.4/scripts/build
--- old/cli-2.6.0/scripts/build 2021-11-10 22:45:16.000000000 +0100
+++ new/cli-2.6.4/scripts/build 2022-02-18 21:28:45.000000000 +0100
@@ -7,7 +7,7 @@
 declare -A OS_ARCH_ARG
 
 OS_PLATFORM_ARG=(linux windows darwin)
-OS_ARCH_ARG[linux]="amd64 arm"
+OS_ARCH_ARG[linux]="amd64 arm s390x"
 OS_ARCH_ARG[windows]="386 amd64"
 OS_ARCH_ARG[darwin]="amd64"
 

++++++ vendor.tar.gz ++++++

Reply via email to