1+ from osc_lib .command import command
2+ from openstackclient .i18n import _
3+ import json
4+
5+
6+ class CreatePropertyMd (command .Lister ):
7+ _description = _ ("md-property-create" )
8+
9+ def get_parser (self , prog_name ):
10+ parser = super (CreatePropertyMd , self ).get_parser (prog_name )
11+ parser .add_argument (
12+ 'namespace' ,
13+ metavar = '<namespace>' ,
14+ help = _ ('namespace' ),
15+ )
16+ parser .add_argument (
17+ '--name' ,
18+ metavar = '<NAME>' ,
19+ help = _ ('NAME' ),
20+ )
21+ parser .add_argument (
22+ '--title' ,
23+ metavar = '<TITLE>' ,
24+ help = _ ('TITLE' ),
25+ )
26+ parser .add_argument (
27+ '--schema' ,
28+ metavar = '<SCHEMA>' ,
29+ help = _ ('SCHEMA' ),
30+ )
31+ return parser
32+
33+ def take_action (self , parsed_args ):
34+ image_client = self .app .client_manager .image
35+
36+ try :
37+ schema = json .loads (parsed_args .schema )
38+ except ValueError :
39+ print ('Schema is not a valid JSON object.' )
40+ else :
41+ fields = {'name' : parsed_args .name , 'title' : parsed_args .title }
42+ fields .update (schema )
43+ kwargs = {"name" : parsed_args .name , "title" : parsed_args .title , "type" : fields ["type" ], "enum" : fields ["enum" ], "description" : fields ["description" ]}
44+
45+ metadata_object = image_client .create_metadef_property (parsed_args .namespace , ** kwargs )
46+
47+ # 출력
48+ column_headers = (
49+ 'Property' ,
50+ 'Value' ,
51+ )
52+
53+ columns = (
54+ ("description" , metadata_object .description ),
55+ ("enum" , metadata_object .enum ),
56+ ("name" , metadata_object .name ),
57+ ("title" , metadata_object .title ),
58+ ("type" , metadata_object .type ),
59+ )
60+
61+ table = (
62+ column_headers ,
63+ (
64+ columns
65+ ),
66+ )
67+ return table
68+
69+
70+ class DeletePropertyMd (command .Lister ):
71+ _description = _ ("md-property-delete" )
72+
73+ def get_parser (self , prog_name ):
74+ parser = super (DeletePropertyMd , self ).get_parser (prog_name )
75+ parser .add_argument (
76+ 'namespace' ,
77+ metavar = '<namespace>' ,
78+ help = _ ('namespace' ),
79+ )
80+ parser .add_argument (
81+ 'property_name' ,
82+ metavar = '<property_name>' ,
83+ help = _ ('property_name' ),
84+ )
85+ return parser
86+
87+ def take_action (self , parsed_args ):
88+ image_client = self .app .client_manager .image
89+ image_client .delete_metadef_property (parsed_args .property_name , parsed_args .namespace )
90+ raise SystemExit
91+
92+
93+ class ShowPropertyMd (command .Lister ):
94+ _description = _ ("md-property-show" )
95+
96+ def get_parser (self , prog_name ):
97+ parser = super (ShowPropertyMd , self ).get_parser (prog_name )
98+ parser .add_argument (
99+ 'namespace' ,
100+ metavar = '<namespace>' ,
101+ help = _ ('namespace' ),
102+ )
103+ parser .add_argument (
104+ 'property_name' ,
105+ metavar = '<property_name>' ,
106+ help = _ ('property_name' ),
107+ )
108+ return parser
109+
110+ def take_action (self , parsed_args ):
111+ image_client = self .app .client_manager .image
112+ metadata_object = image_client .get_metadef_property (parsed_args .property_name , parsed_args .namespace )
113+
114+ # 출력
115+
116+ column_headers = (
117+ 'Property' ,
118+ 'Value' ,
119+ )
120+
121+ columns = (
122+ ("description" , metadata_object .description ),
123+ ("enum" , metadata_object .enum ),
124+ ("name" , metadata_object .name ),
125+ ("title" , metadata_object .title ),
126+ ("type" , metadata_object .type ),
127+ )
128+
129+ table = (
130+ column_headers ,
131+ (
132+ columns
133+ ),
134+ )
135+ return table
136+
137+
138+ class UpdatePropertyMd (command .Lister ):
139+ _description = _ ("md-property-create" )
140+
141+ def get_parser (self , prog_name ):
142+ parser = super (UpdatePropertyMd , self ).get_parser (prog_name )
143+ parser .add_argument (
144+ 'namespace' ,
145+ metavar = '<namespace>' ,
146+ help = _ ('namespace' ),
147+ )
148+ parser .add_argument (
149+ 'property_name' ,
150+ metavar = '<property_name>' ,
151+ help = _ ('property_name' ),
152+ )
153+ parser .add_argument (
154+ '--name' ,
155+ metavar = '<NAME>' ,
156+ help = _ ('NAME' ),
157+ )
158+ parser .add_argument (
159+ '--title' ,
160+ metavar = '<TITLE>' ,
161+ help = _ ('TITLE' ),
162+ )
163+ parser .add_argument (
164+ '--schema' ,
165+ metavar = '<SCHEMA>' ,
166+ help = _ ('SCHEMA' ),
167+ )
168+ return parser
169+
170+ def take_action (self , parsed_args ):
171+ image_client = self .app .client_manager .image
172+
173+ try :
174+ schema = json .loads (parsed_args .schema )
175+ except ValueError :
176+ print ('Schema is not a valid JSON object.' )
177+ else :
178+ fields = {'name' : parsed_args .name , 'title' : parsed_args .title }
179+ fields .update (schema )
180+
181+ kwargs = {"name" : parsed_args .name , "title" : parsed_args .title , "type" : fields ["type" ], "enum" : fields ["enum" ], "description" : fields ["description" ]}
182+ metadata_object = image_client .update_metadef_property (parsed_args .property_name , parsed_args .namespace , ** kwargs )
183+
184+ # 출력
185+ column_headers = (
186+ 'Property' ,
187+ 'Value' ,
188+ )
189+
190+ columns = (
191+ ("description" , metadata_object .description ),
192+ ("enum" , metadata_object .enum ),
193+ ("name" , metadata_object .name ),
194+ ("title" , metadata_object .title ),
195+ ("type" , metadata_object .type ),
196+ )
197+
198+ table = (
199+ column_headers ,
200+ (
201+ columns
202+ ),
203+ )
204+ return table
205+
206+
207+ class ListPropertyMd (command .Lister ):
208+ _description = _ ("md-property-create" )
209+
210+ def get_parser (self , prog_name ):
211+ parser = super (ListPropertyMd , self ).get_parser (prog_name )
212+ parser .add_argument (
213+ 'namespace' ,
214+ metavar = '<namespace>' ,
215+ help = _ ('namespace' ),
216+ )
217+ return parser
218+
219+ def take_action (self , parsed_args ):
220+ image_client = self .app .client_manager .image
221+ metadata_object = image_client .metadef_properties (parsed_args .namespace )
222+
223+ column_headers = (
224+ 'name' ,
225+ 'title' ,
226+ 'type' ,
227+ )
228+
229+ columns = (
230+
231+ )
232+
233+ for metadef in metadata_object .properties :
234+ column = (
235+ (
236+ metadata_object .properties [metadef ]["name" ],
237+ metadata_object .properties [metadef ]["title" ],
238+ metadata_object .properties [metadef ]["type" ],
239+ ),
240+ )
241+ columns += column
242+
243+
244+ table = (
245+ column_headers ,
246+ (
247+ columns
248+ ),
249+ )
250+
251+ return table
0 commit comments