From 65f9bc3b632a012429cd94aa2e6160b44fe633a7 Mon Sep 17 00:00:00 2001 From: Eric Multanen Date: Wed, 19 Feb 2020 16:19:18 -0800 Subject: Add API support to handle App Profiles Add support for profiles per App under composite profiles. See: https://wiki.onap.org/display/DW/V2+API+Specification#V2APISpecification-Addingprofileperapplication Issue-ID: MULTICLOUD-997 Signed-off-by: Eric Multanen Change-Id: I8569066d903327d640e315d0de835605ca1779c0 --- src/orchestrator/utils/utils.go | 66 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/orchestrator/utils/utils.go (limited to 'src/orchestrator/utils/utils.go') diff --git a/src/orchestrator/utils/utils.go b/src/orchestrator/utils/utils.go new file mode 100644 index 00000000..44cf5120 --- /dev/null +++ b/src/orchestrator/utils/utils.go @@ -0,0 +1,66 @@ +/* + * Copyright 2020 Intel Corporation, Inc + * + * 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 utils + +import ( + "archive/tar" + "compress/gzip" + "io" + + pkgerrors "github.com/pkg/errors" +) + +func IsTarGz(r io.Reader) error { + //Check if it is a valid gz + gzf, err := gzip.NewReader(r) + if err != nil { + return pkgerrors.Wrap(err, "Invalid gzip format") + } + + //Check if it is a valid tar file + //Unfortunately this can only be done by inspecting all the tar contents + tarR := tar.NewReader(gzf) + first := true + + for true { + header, err := tarR.Next() + + if err == io.EOF { + //Check if we have just a gzip file without a tar archive inside + if first { + return pkgerrors.New("Empty or non-existant Tar file found") + } + //End of archive + break + } + + if err != nil { + return pkgerrors.Errorf("Error reading tar file %s", err.Error()) + } + + //Check if files are of type directory and regular file + if header.Typeflag != tar.TypeDir && + header.Typeflag != tar.TypeReg { + return pkgerrors.Errorf("Unknown header in tar %s, %s", + header.Name, string(header.Typeflag)) + } + + first = false + } + + return nil +} -- cgit 1.2.3-korg