blob: 1c2dccb0dfcc82051097afaa23abf1ac1758cedd [file] [log] [blame]
Matteo Scandolo920e8fd2017-08-08 13:05:24 -07001
2# Copyright 2017-present Open Networking Foundation
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
Matteo Scandolo5a07a2c2018-06-05 18:04:00 -070016from xosconfig import Config
17from multistructlog import create_logger
18log = create_logger(Config().get('logging'))
Matteo Scandolo920e8fd2017-08-08 13:05:24 -070019
Matteo Scandolo9ce18252017-06-22 10:48:25 -070020import os
Matteo Scandolo1bd10762017-10-18 09:53:14 +020021from default import TOSCA_DEFS_DIR, TOSCA_KEYS_DIR
Scott Baker190df2b2018-10-08 10:54:56 -070022from xosgenx.generator import XOSProcessor, XOSProcessorArgs
Matteo Scandolo9ce18252017-06-22 10:48:25 -070023from xosapi.xos_grpc_client import Empty
24
Matteo Scandolo9ce18252017-06-22 10:48:25 -070025current_dir = os.path.dirname(os.path.realpath(__file__))
26
27class TOSCA_Generator:
28
Scott Baker3f7739c2018-02-20 20:17:34 -080029 def clean(self, dir=TOSCA_DEFS_DIR):
Matteo Scandolo9ce18252017-06-22 10:48:25 -070030 filesToRemove = [f for f in os.listdir(dir)]
31 for f in filesToRemove:
32 if not f.startswith('.'):
33 os.remove(dir + '/' + f)
34
Scott Baker3f7739c2018-02-20 20:17:34 -080035 def clean_keys(self, dir=TOSCA_KEYS_DIR):
36 keys_fn = os.path.join(dir, "KEYS.py")
37 if os.path.exists(keys_fn):
38 os.remove(keys_fn)
39
Matteo Scandolo9ce18252017-06-22 10:48:25 -070040 def generate(self, client):
Matteo Scandolo5a07a2c2018-06-05 18:04:00 -070041 log.info("[XOS-TOSCA] Generating TOSCA")
Matteo Scandolo2c1a0012017-09-12 17:08:04 -070042
Matteo Scandolo9ce18252017-06-22 10:48:25 -070043 try:
Matteo Scandolo2c1a0012017-09-12 17:08:04 -070044 xproto = client.utility.GetXproto(Empty())
Scott Baker190df2b2018-10-08 10:54:56 -070045 args = XOSProcessorArgs(output = TOSCA_DEFS_DIR,
46 inputs = str(xproto.xproto),
47 target = os.path.join(current_dir, 'xtarget/tosca.xtarget'),
48 write_to_file = 'target')
Sapan Bhatia4d711e72018-02-09 19:08:32 -080049 XOSProcessor.process(args)
Matteo Scandolo5a07a2c2018-06-05 18:04:00 -070050 log.info("[XOS-TOSCA] Recipes generated in %s" % args.output)
Matteo Scandolo9ce18252017-06-22 10:48:25 -070051 except Exception as e:
Matteo Scandolo5a07a2c2018-06-05 18:04:00 -070052 log.exception("[XOS-TOSCA] Failed to generate TOSCA")
Matteo Scandolo9ce18252017-06-22 10:48:25 -070053
Matteo Scandolo1bd10762017-10-18 09:53:14 +020054 try:
55 xproto = client.utility.GetXproto(Empty())
Scott Baker190df2b2018-10-08 10:54:56 -070056 args = XOSProcessorArgs(output = TOSCA_KEYS_DIR,
57 inputs = str(xproto.xproto),
58 target = os.path.join(current_dir, 'xtarget/tosca_keys.xtarget'),
59 write_to_file = 'single',
60 dest_file = 'KEYS.py')
Sapan Bhatia4d711e72018-02-09 19:08:32 -080061 XOSProcessor.process(args)
Matteo Scandolo5a07a2c2018-06-05 18:04:00 -070062 log.info("[XOS-TOSCA] TOSCA Keys generated in %s" % args.output)
Matteo Scandolo1bd10762017-10-18 09:53:14 +020063 except Exception as e:
Matteo Scandolo5a07a2c2018-06-05 18:04:00 -070064 log.exception("[XOS-TOSCA] Failed to generate TOSCA Keys")