2d98290196538d4e5850c382f1dc99a842881467
[vfc/nfvo/driver/vnfm/gvnfm.git] / juju / juju-vnfmadapter / Juju-vnfmadapterService / service / src / main / java / org / openo / nfvo / jujuvnfmadapter / service / juju / PyObjectFactory.java
1 /*
2  * Copyright 2016 Huawei Technologies Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.openo.nfvo.jujuvnfmadapter.service.juju;
18
19 import org.python.core.PyObject;
20 import org.python.core.PyString;
21 import org.python.util.PythonInterpreter;
22
23 /**
24  * <br/>
25  * <p>
26  * </p>
27  * 
28  * @author
29  * @version NFVO 0.5 Aug 22, 2016
30  */
31 public class PyObjectFactory {
32
33     private static PyObject environmentClass;
34
35     private static PyObject environmentObj;
36
37     /**
38      * <br>
39      * 
40      * @param envName
41      * @return
42      * @since NFVO 0.5
43      */
44     public static PyObjectFactory build(String envName) {
45         PythonInterpreter interpreter = new PythonInterpreter();
46         
47         interpreter.exec("from jujuclient import Environment");
48         
49         environmentClass = interpreter.get("Environment");
50         PyObject env = environmentClass.__call__();
51         environmentObj = env.invoke("connect", new PyString(envName));
52         return new PyObjectFactory();
53     }
54
55     /**
56      * <br>
57      * 
58      * @param methodName
59      * @return
60      * @since NFVO 0.5
61      */
62     public PyObject execute(String methodName) {
63         environmentObj.toString();
64         return environmentObj.invoke(methodName);
65     }
66
67     /**
68      * <br>
69      * 
70      * @param methodName
71      * @param args
72      * @return
73      * @since NFVO 0.5
74      */
75     public PyObject execute(String methodName, PyObject args) {
76         return environmentObj.invoke(methodName, args);
77     }
78
79     /**
80      * <br>
81      * 
82      * @param methodName
83      * @param arg1
84      * @param arg2
85      * @return
86      * @since NFVO 0.5
87      */
88     public PyObject execute(String methodName, PyObject arg1, PyObject arg2) {
89         return environmentObj.invoke(methodName, arg1, arg2);
90     }
91
92     /**
93      * <br>
94      * 
95      * @param methodName
96      * @param args
97      * @return
98      * @since NFVO 0.5
99      */
100     public PyObject execute(String methodName, PyObject[] args) {
101         return environmentObj.invoke(methodName, args);
102     }
103
104 }