@@ -63,86 +63,91 @@ import (
63
63
// - Policy creation failure
64
64
65
65
func newPolicyCreateCommand (
66
- source * workloadapi.X509Source , spiffeId string ,
66
+ source * workloadapi.X509Source , spiffeId string ,
67
67
) * cobra.Command {
68
- var (
69
- name string
70
- pathPattern string
71
- spiffeIdPattern string
72
- permsStr string
73
- )
74
-
75
- cmd := & cobra.Command {
76
- Use : "create" ,
77
- Short : "Create a new policy" ,
78
- Long : `Create a new policy that grants specific permissions to workloads.
68
+ var (
69
+ name string
70
+ pathPattern string
71
+ spiffeIdPattern string
72
+ permsStr string
73
+ )
74
+
75
+ cmd := & cobra.Command {
76
+ Use : "create" ,
77
+ Short : "Create a new policy" ,
78
+ Long : `Create a new policy that grants specific permissions to workloads.
79
79
80
80
Example:
81
- spike policy create --name=db-access --path="/db/*" --spiffeid="spiffe://example.org/service/*" --permissions="read,write"
81
+ spike policy create --name=db-access
82
+ --path="db/*" --spiffeid="spiffe://example.org/service/*"
83
+ --permissions="read,write"
82
84
83
85
Valid permissions: read, write, list, super` ,
84
- Args : cobra .NoArgs ,
85
- Run : func (cmd * cobra.Command , args []string ) {
86
-
87
- // Check if all required flags are provided
88
- missingFlags := []string {}
89
- if name == "" {
90
- missingFlags = append (missingFlags , "name" )
91
- }
92
- if pathPattern == "" {
93
- missingFlags = append (missingFlags , "path" )
94
- }
95
- if spiffeIdPattern == "" {
96
- missingFlags = append (missingFlags , "spiffeid" )
97
- }
98
- if permsStr == "" {
99
- missingFlags = append (missingFlags , "permissions" )
100
- }
101
-
102
- if len (missingFlags ) > 0 {
103
- fmt .Println ("Error: all flags are required" )
104
- for _ , flag := range missingFlags {
105
- fmt .Printf (" --%s is missing\n " , flag )
106
- }
107
- return
108
- }
109
-
110
- trust .Authenticate (spiffeId )
111
- api := spike .NewWithSource (source )
112
-
113
- // Validate permissions
114
- permissions , err := validatePermissions (permsStr )
115
- if err != nil {
116
- fmt .Printf ("Error: %v\n " , err )
117
- return
118
- }
119
-
120
- // Check if a policy with this name already exists
121
- exists , err := checkPolicyNameExists (api , name )
122
- if handleAPIError (err ) {
123
- return
124
- }
125
-
126
- if exists {
127
- fmt .Printf ("Error: A policy with name '%s' already exists\n " , name )
128
- return
129
- }
130
-
131
- // Create policy
132
- err = api .CreatePolicy (name , spiffeIdPattern , pathPattern , permissions )
133
- if handleAPIError (err ) {
134
- return
135
- }
136
-
137
- fmt .Println ("Policy created successfully" )
138
- },
139
- }
140
-
141
- // Define flags
142
- cmd .Flags ().StringVar (& name , "name" , "" , "Policy name (required)" )
143
- cmd .Flags ().StringVar (& pathPattern , "path" , "" , "Resource path pattern, e.g., '/secrets/*' (required)" )
144
- cmd .Flags ().StringVar (& spiffeIdPattern , "spiffeid" , "" , "SPIFFE ID pattern, e.g., 'spiffe://example.org/service/*' (required)" )
145
- cmd .Flags ().StringVar (& permsStr , "permissions" , "" , "Comma-separated permissions: read, write, list, super (required)" )
146
-
147
- return cmd
148
- }
86
+ Args : cobra .NoArgs ,
87
+ Run : func (cmd * cobra.Command , args []string ) {
88
+
89
+ // Check if all required flags are provided
90
+ missingFlags := []string {}
91
+ if name == "" {
92
+ missingFlags = append (missingFlags , "name" )
93
+ }
94
+ if pathPattern == "" {
95
+ missingFlags = append (missingFlags , "path" )
96
+ }
97
+ if spiffeIdPattern == "" {
98
+ missingFlags = append (missingFlags , "spiffeid" )
99
+ }
100
+ if permsStr == "" {
101
+ missingFlags = append (missingFlags , "permissions" )
102
+ }
103
+
104
+ if len (missingFlags ) > 0 {
105
+ fmt .Println ("Error: all flags are required" )
106
+ for _ , flag := range missingFlags {
107
+ fmt .Printf (" --%s is missing\n " , flag )
108
+ }
109
+ return
110
+ }
111
+
112
+ trust .Authenticate (spiffeId )
113
+ api := spike .NewWithSource (source )
114
+
115
+ // Validate permissions
116
+ permissions , err := validatePermissions (permsStr )
117
+ if err != nil {
118
+ fmt .Printf ("Error: %v\n " , err )
119
+ return
120
+ }
121
+
122
+ // Check if a policy with this name already exists
123
+ exists , err := checkPolicyNameExists (api , name )
124
+ if handleAPIError (err ) {
125
+ return
126
+ }
127
+
128
+ if exists {
129
+ fmt .Printf ("Error: A policy with name '%s' already exists\n " , name )
130
+ return
131
+ }
132
+
133
+ // Create policy
134
+ err = api .CreatePolicy (name , spiffeIdPattern , pathPattern , permissions )
135
+ if handleAPIError (err ) {
136
+ return
137
+ }
138
+
139
+ fmt .Println ("Policy created successfully" )
140
+ },
141
+ }
142
+
143
+ // Define flags
144
+ cmd .Flags ().StringVar (& name , "name" , "" , "Policy name (required)" )
145
+ cmd .Flags ().StringVar (& pathPattern , "path" , "" ,
146
+ "Resource path pattern, e.g., '/secrets/*' (required)" )
147
+ cmd .Flags ().StringVar (& spiffeIdPattern , "spiffeid" , "" ,
148
+ "SPIFFE ID pattern, e.g., 'spiffe://example.org/service/*' (required)" )
149
+ cmd .Flags ().StringVar (& permsStr , "permissions" , "" ,
150
+ "Comma-separated permissions: read, write, list, super (required)" )
151
+
152
+ return cmd
153
+ }
0 commit comments