diff options
author | 2020-02-19 16:19:18 -0800 | |
---|---|---|
committer | 2020-03-05 16:29:23 -0800 | |
commit | 65f9bc3b632a012429cd94aa2e6160b44fe633a7 (patch) | |
tree | e9e49dc5b1aa78cd07f8c96c3a90b2d27b566815 /src/orchestrator/utils/utils.go | |
parent | 8e0c4c63e5a014c95805f16d30a64cd53ddc7385 (diff) |
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 <eric.w.multanen@intel.com>
Change-Id: I8569066d903327d640e315d0de835605ca1779c0
Diffstat (limited to 'src/orchestrator/utils/utils.go')
-rw-r--r-- | src/orchestrator/utils/utils.go | 66 |
1 files changed, 66 insertions, 0 deletions
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 +} |