From 93974b46374d1822dbfcb0d0cc0a41f3c6858535 Mon Sep 17 00:00:00 2001 From: Jesse Haka Date: Thu, 24 Jan 2019 08:59:23 +0200 Subject: [PATCH 1/2] find sshkey resource when updating cluster --- pkg/resources/openstack/compute.go | 2 +- upup/pkg/fi/cloudup/openstack/cloud.go | 4 ++-- upup/pkg/fi/cloudup/openstack/keypair.go | 2 +- upup/pkg/fi/cloudup/openstacktasks/sshkey.go | 16 +++++++++++++++- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/pkg/resources/openstack/compute.go b/pkg/resources/openstack/compute.go index d7a8e63ca3..d572e3e45f 100644 --- a/pkg/resources/openstack/compute.go +++ b/pkg/resources/openstack/compute.go @@ -99,7 +99,7 @@ func listServerGroups(cloud openstack.OpenstackCloud, clusterName string) ([]*re func listKeypairs(cloud openstack.OpenstackCloud, clusterName string) ([]*resources.Resource, error) { var resourceTrackers []*resources.Resource - kp, err := cloud.ListKeypair(clusterName) + kp, err := cloud.GetKeypair(clusterName) if err != nil { return nil, fmt.Errorf("failed to get keypair: %s", err) } diff --git a/upup/pkg/fi/cloudup/openstack/cloud.go b/upup/pkg/fi/cloudup/openstack/cloud.go index 1856357424..68dc3e27be 100644 --- a/upup/pkg/fi/cloudup/openstack/cloud.go +++ b/upup/pkg/fi/cloudup/openstack/cloud.go @@ -150,8 +150,8 @@ type OpenstackCloud interface { //CreateSubnet will create a new Neutron subnet CreateSubnet(opt subnets.CreateOptsBuilder) (*subnets.Subnet, error) - // ListKeypair will return the Nova keypairs - ListKeypair(name string) (*keypairs.KeyPair, error) + // GetKeypair will return the Nova keypair + GetKeypair(name string) (*keypairs.KeyPair, error) // CreateKeypair will create a new Nova Keypair CreateKeypair(opt keypairs.CreateOptsBuilder) (*keypairs.KeyPair, error) diff --git a/upup/pkg/fi/cloudup/openstack/keypair.go b/upup/pkg/fi/cloudup/openstack/keypair.go index a3db8178dc..1d61626e76 100644 --- a/upup/pkg/fi/cloudup/openstack/keypair.go +++ b/upup/pkg/fi/cloudup/openstack/keypair.go @@ -24,7 +24,7 @@ import ( "k8s.io/kops/util/pkg/vfs" ) -func (c *openstackCloud) ListKeypair(name string) (*keypairs.KeyPair, error) { +func (c *openstackCloud) GetKeypair(name string) (*keypairs.KeyPair, error) { var k *keypairs.KeyPair done, err := vfs.RetryWithBackoff(readBackoff, func() (bool, error) { rs, err := keypairs.Get(c.novaClient, name).Extract() diff --git a/upup/pkg/fi/cloudup/openstacktasks/sshkey.go b/upup/pkg/fi/cloudup/openstacktasks/sshkey.go index d4f4ebe616..89910ca241 100644 --- a/upup/pkg/fi/cloudup/openstacktasks/sshkey.go +++ b/upup/pkg/fi/cloudup/openstacktasks/sshkey.go @@ -23,6 +23,7 @@ import ( "github.com/golang/glog" "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/keypairs" + "k8s.io/kops/pkg/pki" "k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi/cloudup/openstack" ) @@ -45,7 +46,7 @@ func (e *SSHKey) CompareWithID() *string { func (e *SSHKey) Find(c *fi.Context) (*SSHKey, error) { cloud := c.Cloud.(openstack.OpenstackCloud) - rs, err := cloud.ListKeypair(openstackKeyPairName(fi.StringValue(e.Name))) + rs, err := cloud.GetKeypair(openstackKeyPairName(fi.StringValue(e.Name))) if err != nil { return nil, err } @@ -69,6 +70,19 @@ func (e *SSHKey) Find(c *fi.Context) (*SSHKey, error) { } func (e *SSHKey) Run(c *fi.Context) error { + if e.KeyFingerprint == nil && e.PublicKey != nil { + publicKey, err := e.PublicKey.AsString() + if err != nil { + return fmt.Errorf("error reading SSH public key: %v", err) + } + + keyFingerprint, err := pki.ComputeOpenSSHKeyFingerprint(publicKey) + if err != nil { + return fmt.Errorf("error computing key fingerprint for SSH key: %v", err) + } + glog.V(2).Infof("Computed SSH key fingerprint as %q", keyFingerprint) + e.KeyFingerprint = &keyFingerprint + } return fi.DefaultDeltaRunMethod(e, c) } From 06de6b3cad3bc2a53ea490e118cd1d618ab4789a Mon Sep 17 00:00:00 2001 From: Jesse Haka Date: Thu, 24 Jan 2019 09:31:06 +0200 Subject: [PATCH 2/2] update bazel --- upup/pkg/fi/cloudup/openstacktasks/BUILD.bazel | 1 + 1 file changed, 1 insertion(+) diff --git a/upup/pkg/fi/cloudup/openstacktasks/BUILD.bazel b/upup/pkg/fi/cloudup/openstacktasks/BUILD.bazel index 9470bd7727..0caaa8147e 100644 --- a/upup/pkg/fi/cloudup/openstacktasks/BUILD.bazel +++ b/upup/pkg/fi/cloudup/openstacktasks/BUILD.bazel @@ -39,6 +39,7 @@ go_library( importpath = "k8s.io/kops/upup/pkg/fi/cloudup/openstacktasks", visibility = ["//visibility:public"], deps = [ + "//pkg/pki:go_default_library", "//upup/pkg/fi:go_default_library", "//upup/pkg/fi/cloudup/openstack:go_default_library", "//vendor/github.com/golang/glog:go_default_library",