3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
20 from dss.api import dss_error
21 from dss.client import dss_client
24 def __call__(self, msg):
30 self.verbose_logger = VerboseLogger()
32 def _init_api(self, server, verbose):
35 logger = self.verbose_logger
37 self.client = dss_client.Client(server)
39 def set_handler(self, subparser):
40 subparser.set_defaults(handler=self)
42 def init_subparser(self, subparsers):
43 raise dss_error.Error('Not implemented')
45 def __call__(self, args):
46 raise dss_error.Error('Not implemented')
49 class CLIGetHandler(CLIHandler):
50 def init_subparser(self, subparsers):
51 subparser = subparsers.add_parser('get', help='Get the value of an attribute')
52 subparser.add_argument('--domain',
58 subparser.add_argument('--name',
64 self.set_handler(subparser)
66 def __call__(self, args):
67 self._init_api(args.server, args.verbose)
68 value = self.client.get(args.domain, args.name)
71 class CLIGetDomainHandler(CLIHandler):
72 def init_subparser(self, subparsers):
73 subparser = subparsers.add_parser('get-domain', help='Get the domain attributes')
74 subparser.add_argument('--domain',
80 self.set_handler(subparser)
82 def __call__(self, args):
83 self._init_api(args.server, args.verbose)
84 attrs = self.client.get_domain(args.domain)
85 for name, value in attrs.iteritems():
86 print('%s = %s' % (name, value))
88 class CLIGetDomainsHandler(CLIHandler):
89 def init_subparser(self, subparsers):
90 subparser = subparsers.add_parser('get-domains', help='Get the domains')
91 self.set_handler(subparser)
93 def __call__(self, args):
94 self._init_api(args.server, args.verbose)
95 domains = self.client.get_domains()
96 for domain in domains:
99 class CLISetHandler(CLIHandler):
100 def init_subparser(self, subparsers):
101 subparser = subparsers.add_parser('set', help='Set an attribute to some value')
102 subparser.add_argument('--domain',
107 subparser.add_argument('--name',
112 subparser.add_argument('--value',
118 self.set_handler(subparser)
120 def __call__(self, args):
121 self._init_api(args.server, args.verbose)
122 self.client.set(args.domain, args.name, args.value)
124 class CLIDeleteHandler(CLIHandler):
125 def init_subparser(self, subparsers):
126 subparser = subparsers.add_parser('delete', help='Delete an attribute')
127 subparser.add_argument('--domain',
132 subparser.add_argument('--name',
138 self.set_handler(subparser)
140 def __call__(self, args):
141 self._init_api(args.server, args.verbose)
142 self.client.delete(args.domain, args.name)
144 class CLIDeleteDomainHandler(CLIHandler):
145 def init_subparser(self, subparsers):
146 subparser = subparsers.add_parser('delete-domain', help='Delete a domain')
147 subparser.add_argument('--domain',
153 self.set_handler(subparser)
155 def __call__(self, args):
156 self._init_api(args.server, args.verbose)
157 self.client.delete_domain(args.domain)
162 def get_handlers_list():
164 for name, obj in inspect.getmembers(sys.modules[__name__]):
165 if inspect.isclass(obj):
166 if name is not 'CLIHandler':
167 if issubclass(obj, CLIHandler):
168 handlers.append(obj())
171 if __name__ == '__main__':
172 handlers = get_handlers_list()
173 for handler in handlers:
174 print('handler is ', handler)