Skip to content

Commit 31f1545

Browse files
authored
Merge pull request Juniper#37 from riteshr612/error-hndling-yang
Error handling for process yang functionality
2 parents 995db89 + be64fd0 commit 31f1545

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

cmd/processYang/checkVenv.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/usr/bin/env python3
2+
3+
"""
4+
// Copyright (c) 2017-2021, Juniper Networks Inc. All rights reserved.
5+
//
6+
// License: Apache 2.0
7+
//
8+
// THIS SOFTWARE IS PROVIDED BY Juniper Networks, Inc. ''AS IS'' AND ANY
9+
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
10+
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
11+
// DISCLAIMED. IN NO EVENT SHALL Juniper Networks, Inc. BE LIABLE FOR ANY
12+
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
13+
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
14+
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
15+
// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
16+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
17+
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
18+
//
19+
20+
"""
21+
import sys
22+
23+
def getBasePrefix():
24+
return getattr(sys, "base_prefix", None) or getattr(sys, "real_prefix",
25+
None) or sys.prefix
26+
if __name__ == "__main__":
27+
if getBasePrefix() != sys.prefix:
28+
print('true')
29+
else:
30+
print('false')

cmd/processYang/main.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"flag"
2121
"fmt"
2222
"os"
23+
"os/exec"
2324

2425
"github.com/Juniper/junos-terraform/Internal/cfg"
2526
"github.com/Juniper/junos-terraform/Internal/processYang"
@@ -34,6 +35,35 @@ func check(e error) {
3435
}
3536
}
3637

38+
// Check if running from venv
39+
func check_venv_exists() {
40+
app := "python3"
41+
script := "checkVenv.py"
42+
cmd := exec.Command(app, script)
43+
stdout, err := cmd.Output()
44+
45+
if err != nil {
46+
fmt.Println(err.Error())
47+
panic(err)
48+
}
49+
if string(stdout) == "false\n" {
50+
fmt.Println("ERROR: Please run this in a python3 virtual environment.\n")
51+
os.Exit(1)
52+
}
53+
}
54+
55+
func check_pyang_installed() {
56+
app := "pyang"
57+
ver := "-v"
58+
cmd := exec.Command(app, ver)
59+
_, err := cmd.Output()
60+
61+
if err != nil {
62+
fmt.Println("ERROR: Please install pyang in the virtual environment.\n")
63+
os.Exit(1)
64+
}
65+
}
66+
3767
func PrintLogo() {
3868
const jtafLogo = `
3969
___ _____ ___ ______
@@ -79,6 +109,8 @@ func main() {
79109

80110
PrintLogo()
81111

112+
check_venv_exists()
113+
check_pyang_installed()
82114
check(processYang.CreateYinFileAndXpath(jcfg))
83115
} else if *flagYang != "" || *flagFileType != "" {
84116
// If config file path is not present then check for individual elements.
@@ -87,6 +119,8 @@ func main() {
87119

88120
PrintLogo()
89121

122+
check_venv_exists()
123+
check_pyang_installed()
90124
check(processYang.CreateYinFileAndXpath(jcfg))
91125
} else {
92126
fmt.Println("One or more mandatory inputs are missing, exiting...")

0 commit comments

Comments
 (0)