1 package org.opendaylight.alto.ext.cli.fileconverter;
3 import org.apache.karaf.shell.console.OsgiCommandSupport;
5 import org.apache.felix.gogo.commands.Argument;
6 import org.apache.felix.gogo.commands.Command;
8 import org.opendaylight.alto.commons.types.converter.RFC2ModelNetworkMapConverter;
9 import org.opendaylight.alto.commons.types.rfc7285.RFC7285JSONMapper;
10 import org.opendaylight.alto.commons.types.rfc7285.RFC7285NetworkMap;
11 import org.opendaylight.alto.commons.types.model150404.ModelJSONMapper;
12 import org.opendaylight.alto.commons.types.model150404.ModelNetworkMap;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
17 @Command(scope = "alto", name = "file-rfc2yang", description = "Convert file from RFC 7285 format to Yang Data format")
18 public class RFC2Yang extends OsgiCommandSupport {
20 private static final Logger logger = LoggerFactory.getLogger(RFC2Yang.class);
22 @Argument(index = 0, name = "type", description = "The type of the source file", required = true, multiValued = false)
25 @Argument(index = 1, name = "source", description = "The source file", required = true, multiValued = false)
28 @Argument(index = 2, name = "target", description = "The target file", required = false, multiValued = false)
31 protected RFC7285JSONMapper rfcMapper = new RFC7285JSONMapper();
32 protected ModelJSONMapper modelMapper = new ModelJSONMapper();
33 protected FileConverterHelper helper = new FileConverterHelper();
36 protected Object doExecute() throws Exception {
37 logger.info("command: alto:rfc2yang {} {} {}",
38 type, source, target);
39 if (ConvertType.NETWORK_MAP.equals(type)) {
40 String input = helper.load(source);
41 RFC7285NetworkMap rfcMap = rfcMapper.asNetworkMap(input);
43 RFC2ModelNetworkMapConverter conv = new RFC2ModelNetworkMapConverter();
45 ModelNetworkMap modelMap = conv.convert(rfcMap);
46 String output = modelMapper.asJSON(modelMap);
47 helper.save(target, output);
49 throw new UnsupportedOperationException("Not implemented yet");