/* * Copyright 2017 Huawei Technologies Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.onap.cvc.csar.cc; import java.util.ArrayList; import java.util.List; import org.onap.cli.fw.cmd.OnapCommand; import org.onap.cli.fw.error.OnapCommandException; import org.onap.cli.fw.error.OnapCommandExecutionFailed; import org.onap.cli.fw.schema.OnapCommandSchema; import org.onap.cvc.csar.CSARArchive; import org.onap.cvc.csar.CSARArchive.CSARError; import org.onap.cvc.csar.CSARArchive.CSARErrorEntryMissing; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * R-77707: Manifest file */ @OnapCommandSchema(schema = "vtp-validate-csar-r77707.yaml") public class VTPValidateCSARR77707 extends OnapCommand { private static final Logger LOG = LoggerFactory.getLogger(VTPValidateCSARR77707.class); public static class CSARErrorEntryMissingDefinitionNotFound extends CSARErrorEntryMissing { public CSARErrorEntryMissingDefinitionNotFound() { super( "TOSCA definition or Tosca.Meata", CSARArchive.CSAR_Archive, -1, "The VNF provider MUST include a Manifest File that contains a list " + "of all the components in the VNF package."); this.setSubCode("r77707-0x1000"); } } @Override protected void run() throws OnapCommandException { //Read the input arguments String path = (String) getParametersMap().get("csar").getValue(); List errors = new ArrayList<>(); //execute try { CSARArchive csar = new CSARArchive(); csar.init(path); csar.parse(); if (csar.getToscaMeta().getEntryDefinitionYaml() == null || csar.getDefinitionYamlFile() == null || !csar.getDefinitionYamlFile().exists()) { errors.add(new CSARErrorEntryMissingDefinitionNotFound()); } csar.cleanup(); } catch (Exception e) { LOG.error("R-77707: ", e); throw new OnapCommandExecutionFailed(e.getMessage()); } this.getResult().setOutput(errors); //set the result for (CSARError e: errors) { this.getResult().getRecordsMap().get("code").getValues().add(e.getCode()); this.getResult().getRecordsMap().get("message").getValues().add(e.getMessage()); this.getResult().getRecordsMap().get("file").getValues().add(e.getFile()); this.getResult().getRecordsMap().get("line-no").getValues().add(Integer.toString(e.getLineNumber())); } } }