2828from openstackclient .common import utils
2929
3030
31- def get_tenant_properties (tenant , fields , formatters = {}):
32- """Return a tuple containing the server properties.
33-
34- :param server: a single Server resource
35- :param fields: tuple of strings with the desired field names
36- :param formatters: dictionary mapping field names to callables
37- to format the values
38- """
39- row = []
40- mixed_case_fields = []
41-
42- for field in fields :
43- if field in formatters :
44- row .append (formatters [field ](tenant ))
45- else :
46- if field in mixed_case_fields :
47- field_name = field .replace (' ' , '_' )
48- else :
49- field_name = field .lower ().replace (' ' , '_' )
50- data = getattr (tenant , field_name , '' )
51- row .append (data )
52- return tuple (row )
31+ class Create_Tenant (command .OpenStackCommand , show .ShowOne ):
32+ """Create tenant command"""
33+
34+ api = 'identity'
35+ log = logging .getLogger (__name__ )
36+
37+ def get_parser (self , prog_name ):
38+ parser = super (Create_Tenant , self ).get_parser (prog_name )
39+ parser .add_argument (
40+ 'tenant_name' ,
41+ metavar = '<tenant-name>' ,
42+ help = 'New tenant name' )
43+ parser .add_argument (
44+ '--description' ,
45+ metavar = '<tenant-description>' ,
46+ help = 'New tenant description' )
47+ parser .add_argument (
48+ '--enabled' ,
49+ metavar = '<true|false>' ,
50+ default = True ,
51+ help = 'Initial tenant enabled status (default true)' )
52+ return parser
53+
54+ def get_data (self , parsed_args ):
55+ self .log .debug ('v2_0.Create_Tenant.get_data(%s)' % parsed_args )
56+ identity_client = self .app .client_manager .identity
57+ tenant = identity_client .tenants .create (
58+ parsed_args .tenant_name ,
59+ description = parsed_args .description ,
60+ enabled = parsed_args .enabled ,
61+ )
62+
63+ info = {}
64+ info .update (tenant ._info )
65+
66+ columns = sorted (info .keys ())
67+ values = [info [c ] for c in columns ]
68+ return (columns , values )
69+
70+
71+ class Delete_Tenant (command .OpenStackCommand ):
72+ """Delete tenant command"""
73+
74+ api = 'identity'
75+ log = logging .getLogger (__name__ )
76+
77+ def get_parser (self , prog_name ):
78+ parser = super (Delete_Tenant , self ).get_parser (prog_name )
79+ parser .add_argument (
80+ 'tenant' ,
81+ metavar = '<tenant>' ,
82+ help = 'Name or ID of tenant to delete' )
83+ return parser
84+
85+ def run (self , parsed_args ):
86+ self .log .debug ('v2_0.Delete_Tenant.run(%s)' % parsed_args )
87+ identity_client = self .app .client_manager .identity
88+ tenant = utils .find_resource (
89+ identity_client .tenants , parsed_args .tenant )
90+ identity_client .tenants .delete (tenant .id )
91+ return
5392
5493
5594class List_Tenant (command .OpenStackCommand , lister .Lister ):
56- "List tenant command. "
95+ """ List tenant command"" "
5796
5897 api = 'identity'
5998 log = logging .getLogger (__name__ )
6099
100+ def get_parser (self , prog_name ):
101+ parser = super (List_Tenant , self ).get_parser (prog_name )
102+ parser .add_argument (
103+ '--long' ,
104+ action = 'store_true' ,
105+ default = False ,
106+ help = 'Additional fields are listed in output' )
107+ return parser
108+
61109 def get_data (self , parsed_args ):
62- self .log .debug ('v2.List_Service.run(%s)' % parsed_args )
63- columns = ('ID' , 'Name' , 'Enabled' )
110+ self .log .debug ('v2_0.List_Tenant.get_data(%s)' % parsed_args )
111+ if parsed_args .long :
112+ columns = ('ID' , 'Name' , 'Description' , 'Enabled' )
113+ else :
114+ columns = ('ID' , 'Name' )
64115 data = self .app .client_manager .identity .tenants .list ()
65116 return (columns ,
66- (get_tenant_properties (
117+ (utils . get_item_properties (
67118 s , columns ,
68119 formatters = {},
69- ) for s in data ),
70- )
120+ ) for s in data ),
121+ )
122+
123+
124+ class Set_Tenant (command .OpenStackCommand ):
125+ """Set tenant command"""
126+
127+ api = 'identity'
128+ log = logging .getLogger (__name__ )
129+
130+ def get_parser (self , prog_name ):
131+ parser = super (Set_Tenant , self ).get_parser (prog_name )
132+ parser .add_argument (
133+ 'tenant' ,
134+ metavar = '<tenant>' ,
135+ help = 'Name or ID of tenant to change' )
136+ parser .add_argument (
137+ '--name' ,
138+ metavar = '<new-tenant-name>' ,
139+ help = 'New tenant name' )
140+ parser .add_argument (
141+ '--description' ,
142+ metavar = '<tenant-description>' ,
143+ help = 'New tenant description' )
144+ parser .add_argument (
145+ '--enabled' ,
146+ metavar = '<true|false>' ,
147+ help = 'New tenant enabled status' )
148+ return parser
149+
150+ def run (self , parsed_args ):
151+ self .log .debug ('v2_0.Set_Tenant.run(%s)' % parsed_args )
152+ identity_client = self .app .client_manager .identity
153+ tenant = utils .find_resource (
154+ identity_client .tenants , parsed_args .tenant )
155+ kwargs = {}
156+ if parsed_args .name :
157+ kwargs .update ({'name' : parsed_args .name })
158+ if parsed_args .description :
159+ kwargs .update ({'description' : parsed_args .description })
160+ if parsed_args .enabled :
161+ kwargs .update (
162+ {'enabled' : utils .string_to_bool (parsed_args .enabled )},
163+ )
164+
165+ if kwargs == {}:
166+ print "Tenant not updated, no arguments present."
167+ return
168+ tenant .update (** kwargs )
169+ return
71170
72171
73172class Show_Tenant (command .OpenStackCommand , show .ShowOne ):
74- "Show server command. "
173+ """ Show tenant command"" "
75174
76175 api = 'identity'
77176 log = logging .getLogger (__name__ )
@@ -85,17 +184,14 @@ def get_parser(self, prog_name):
85184 return parser
86185
87186 def get_data (self , parsed_args ):
88- self .log .debug ('v2 .Show_Tenant.run (%s)' % parsed_args )
187+ self .log .debug ('v2_0 .Show_Tenant.get_data (%s)' % parsed_args )
89188 identity_client = self .app .client_manager .identity
90189 tenant = utils .find_resource (
91190 identity_client .tenants , parsed_args .tenant )
92191
93192 info = {}
94193 info .update (tenant ._info )
95194
96- # Remove a couple of values that are long and not too useful
97- #info.pop('links', None)
98-
99195 columns = sorted (info .keys ())
100196 values = [info [c ] for c in columns ]
101197 return (columns , values )
0 commit comments