m/c/metroctl: move common impl to m/c/m/core

This moves the implementation shared between CLI commands into metroctl
core package.

Change-Id: I93624a07356accf3441f02e6ecd8e91d5b71e66e
Reviewed-on: https://review.monogon.dev/c/monogon/+/843
Tested-by: Jenkins CI
Reviewed-by: Sergiusz Bazanski <serge@monogon.tech>
diff --git a/metropolis/cli/metroctl/install.go b/metropolis/cli/metroctl/install.go
index 38b82bf..07f5d3e 100644
--- a/metropolis/cli/metroctl/install.go
+++ b/metropolis/cli/metroctl/install.go
@@ -118,20 +118,7 @@
 			},
 		}
 	} else {
-		ocert, opkey, err := getCredentials()
-		if err == noCredentialsError {
-			log.Fatalf("In order to create a non-bootstrap node installer, you have to take ownership of the cluster first: %v", err)
-		}
-		if err != nil {
-			log.Fatalf("While retrieving owner credentials: %v", err)
-		}
-		if len(flags.clusterEndpoints) == 0 {
-			log.Fatal("At least one cluster endpoint is required while generating non-bootstrap installer images.")
-		}
-		cc, err := dialCluster(ctx, opkey, ocert, flags.proxyAddr, flags.clusterEndpoints)
-		if err != nil {
-			log.Fatalf("While dialing the cluster: %v", err)
-		}
+		cc := dialAuthenticated()
 		mgmt := api.NewManagementClient(cc)
 		resT, err := mgmt.GetRegisterTicket(ctx, &api.GetRegisterTicketRequest{})
 		if err != nil {