2  * Copyright 2016 Huawei Technologies Co., Ltd.
 
   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
 
   8  *     http://www.apache.org/licenses/LICENSE-2.0
 
  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.
 
  17 package org.onap.vfc.nfvo.vnfm.gvnfm.jujuvnfmadapter.service.juju;
 
  19 import org.python.core.PyObject;
 
  20 import org.python.core.PyString;
 
  21 import org.python.util.PythonInterpreter;
 
  29  * @version NFVO 0.5 Aug 22, 2016
 
  31 public class PyObjectFactory {
 
  33     private static PyObject environmentClass;
 
  35     private static PyObject environmentObj;
 
  44     public static PyObjectFactory build(String envName) {
 
  45         PythonInterpreter interpreter = new PythonInterpreter();
 
  47         interpreter.exec("from jujuclient import Environment");
 
  49         environmentClass = interpreter.get("Environment");
 
  50         PyObject env = environmentClass.__call__();
 
  51         environmentObj = env.invoke("connect", new PyString(envName));
 
  52         return new PyObjectFactory();
 
  62     public PyObject execute(String methodName) {
 
  63         environmentObj.toString();
 
  64         return environmentObj.invoke(methodName);
 
  75     public PyObject execute(String methodName, PyObject args) {
 
  76         return environmentObj.invoke(methodName, args);
 
  88     public PyObject execute(String methodName, PyObject arg1, PyObject arg2) {
 
  89         return environmentObj.invoke(methodName, arg1, arg2);
 
 100     public PyObject execute(String methodName, PyObject[] args) {
 
 101         return environmentObj.invoke(methodName, args);