MCPcopy Create free account
hub / github.com/cloudnative-pg/cloudnative-pg / Generate

Function Generate

internal/cmd/plugin/certificate/certificate.go:46–92  ·  view source on GitHub ↗

Generate generates a Kubernetes secret suitable to allow certificate authentication for a PostgreSQL user

(ctx context.Context, params Params, dryRun bool, format plugin.OutputFormat)

Source from the content-addressed store, hash-verified

44// Generate generates a Kubernetes secret suitable to allow certificate authentication
45// for a PostgreSQL user
46func Generate(ctx context.Context, params Params, dryRun bool, format plugin.OutputFormat) error {
47 var secret corev1.Secret
48
49 var cluster apiv1.Cluster
50 err := plugin.Client.Get(ctx,
51 client.ObjectKey{Namespace: params.Namespace, Name: params.ClusterName},
52 &cluster)
53 if err != nil {
54 return err
55 }
56
57 err = plugin.Client.Get(
58 ctx,
59 client.ObjectKey{Namespace: params.Namespace, Name: cluster.GetClientCASecretName()},
60 &secret)
61 if err != nil {
62 return err
63 }
64
65 caPair, err := certs.ParseCASecret(&secret)
66 if err != nil {
67 return err
68 }
69
70 userPair, err := caPair.CreateAndSignPair(params.User, certs.CertTypeClient, nil)
71 if err != nil {
72 return err
73 }
74
75 userSecret := userPair.GenerateCertificateSecret(params.Namespace, params.Name)
76 err = plugin.Print(userSecret, format, os.Stdout)
77 if err != nil {
78 return err
79 }
80
81 if dryRun {
82 return nil
83 }
84
85 err = plugin.Client.Create(ctx, userSecret)
86 if err != nil {
87 return err
88 }
89
90 fmt.Printf("secret/%v created\n", userSecret.Name)
91 return nil
92}

Callers 1

NewCmdFunction · 0.85

Calls 7

GetClientCASecretNameMethod · 0.95
ParseCASecretFunction · 0.92
PrintFunction · 0.92
CreateAndSignPairMethod · 0.80
CreateMethod · 0.65
GetMethod · 0.45

Tested by

no test coverage detected