2 * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
8 package org.opendaylight.nemo.user;
\r
10 import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Error;
\r
11 import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Ok;
\r
13 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
\r
14 import org.opendaylight.nemo.intent.IntentResolutionException;
\r
15 import org.opendaylight.nemo.intent.IntentResolver;
\r
16 import org.opendaylight.nemo.intent.computation.VNMappingException;
\r
17 import org.opendaylight.nemo.user.advancedquery.AdvancedQuery;
\r
18 import org.opendaylight.nemo.user.tenantmanager.AAA;
\r
19 import org.opendaylight.nemo.user.tenantmanager.RegisterUser;
\r
20 import org.opendaylight.nemo.user.tenantmanager.TenantManage;
\r
21 import org.opendaylight.nemo.user.transactionmanager.TransactionBegin;
\r
22 import org.opendaylight.nemo.user.transactionmanager.TransactionEnd;
\r
23 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.LanguageIntent;
\r
24 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteIntent;
\r
25 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateIntent;
\r
26 import org.opendaylight.nemo.user.vnspacemanager.VNSpaceManagement;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.*;
\r
28 import org.opendaylight.yangtools.yang.common.RpcResult;
\r
29 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
\r
31 import java.util.concurrent.Future;
\r
34 * Created by z00293636 on 2015/9/7.
\r
36 public class UserManager implements NemoIntentService {
\r
38 private final DataBroker dataBroker;
\r
40 private VNSpaceManagement vnSpaceManagement;
\r
41 private RegisterUser registerUser;
\r
42 private UpdateIntent updateIntent;
\r
43 private DeleteIntent deleteIntent;
\r
44 private LanguageIntent languageIntent;
\r
45 private TenantManage tenantManage;
\r
47 private TransactionBegin transactionBegin;
\r
48 private TransactionEnd transactionEnd;
\r
49 private AdvancedQuery advancedQuery;
\r
50 private IntentResolver intentResolver;
\r
52 Boolean transaction;
\r
53 Boolean informresolver;
\r
55 public UserManager(DataBroker dataBroker0, IntentResolver intentResolver0)
\r
57 this.dataBroker = dataBroker0;
\r
59 this.intentResolver = intentResolver0;
\r
60 vnSpaceManagement = new VNSpaceManagement(dataBroker);
\r
61 tenantManage = new TenantManage(dataBroker);
\r
62 aaa = new AAA(tenantManage);
\r
63 registerUser = new RegisterUser(tenantManage);
\r
64 updateIntent = new UpdateIntent(dataBroker,tenantManage);
\r
65 deleteIntent = new DeleteIntent(dataBroker, tenantManage);
\r
66 languageIntent = new LanguageIntent(dataBroker);
\r
67 advancedQuery = new AdvancedQuery(dataBroker, tenantManage);
\r
69 transactionBegin = new TransactionBegin();
\r
70 transactionEnd = new TransactionEnd();
\r
72 transaction = false;
\r
73 informresolver = false;
\r
77 public Future<RpcResult<AdvancedNemoQueryOutput>> advancedNemoQuery(AdvancedNemoQueryInput input) {
\r
78 final AdvancedNemoQueryOutputBuilder outputBuilder = new AdvancedNemoQueryOutputBuilder();
\r
80 String errorInfo = advancedQuery.advancedQuery(aaa, input);
\r
81 if (errorInfo != null)
\r
83 outputBuilder.setResultCode(Error).setMessage(errorInfo);
\r
87 outputBuilder.setResultCode(Ok).setMessage(advancedQuery.getAdvancedQueryReuslt(input));
\r
90 return RpcResultBuilder.success(outputBuilder).buildFuture();
\r
94 public Future<RpcResult<BeginTransactionOutput>> beginTransaction(BeginTransactionInput input) {
\r
95 final BeginTransactionOutputBuilder outputBuilder = new BeginTransactionOutputBuilder();
\r
99 outputBuilder.setResultCode(Error).setMessage("The previous transaction has not been finished.");
\r
103 String errorInfo = transactionBegin.transactionbegin(aaa,input);
\r
104 if (errorInfo != null)
\r
106 outputBuilder.setResultCode(Error).setMessage(errorInfo);
\r
110 transaction = true;
\r
111 outputBuilder.setResultCode(Ok).setMessage("Transaction Begin.");
\r
115 return RpcResultBuilder.success(outputBuilder).buildFuture();
\r
119 public Future<RpcResult<EndTransactionOutput>> endTransaction(EndTransactionInput input) {
\r
120 final EndTransactionOutputBuilder outputBuilder = new EndTransactionOutputBuilder();
\r
124 outputBuilder.setResultCode(Error).setMessage("The transaction has not started.");
\r
128 String errorInfo = transactionEnd.transactionend(aaa,input);
\r
129 if (errorInfo != null)
\r
131 outputBuilder.setResultCode(Error).setMessage(errorInfo);
\r
135 transaction = false;
\r
136 if (informresolver)
\r
138 informresolver = false;
\r
141 intentResolver.resolveIntent(input.getUserId());
\r
142 outputBuilder.setResultCode(Ok).setMessage("The transaction ends.");
\r
144 catch (IntentResolutionException | VNMappingException e)
\r
146 e.printStackTrace();
\r
147 outputBuilder.setResultCode(Error).setMessage(e.getMessage());
\r
149 catch (Exception e)
\r
151 e.printStackTrace();
\r
156 outputBuilder.setResultCode(Ok).setMessage("The transaction ends.");
\r
162 return RpcResultBuilder.success(outputBuilder).buildFuture();
\r
166 public Future<RpcResult<LanguageStyleNemoRequestOutput>> languageStyleNemoRequest(LanguageStyleNemoRequestInput input) {
\r
167 final LanguageStyleNemoRequestOutputBuilder outputBuilder = new LanguageStyleNemoRequestOutputBuilder();
\r
169 String errorInfo = languageIntent.LanIntentHandler(aaa,input);
\r
171 if (errorInfo != null)
\r
173 outputBuilder.setResultCode(Error).setMessage(errorInfo);
\r
177 outputBuilder.setResultCode(Ok).setMessage("The intent has been stored in this transaction.");
\r
178 informresolver = true;
\r
181 return RpcResultBuilder.success(outputBuilder).buildFuture();
\r
185 public Future<RpcResult<RegisterUserOutput>> registerUser(RegisterUserInput input) {
\r
186 final RegisterUserOutputBuilder registerUserOutputBuilder = new RegisterUserOutputBuilder();
\r
188 String errorInfo = registerUser.registerUser(input);
\r
190 if (errorInfo != null)
\r
192 registerUserOutputBuilder.setResultCode(Error).setMessage(errorInfo);
\r
196 registerUserOutputBuilder.setResultCode(Ok).setMessage("Register user successfully.");
\r
199 return RpcResultBuilder.success(registerUserOutputBuilder).buildFuture();
\r
203 public Future<RpcResult<StructureStyleNemoDeleteOutput>> structureStyleNemoDelete(StructureStyleNemoDeleteInput input) {
\r
204 final StructureStyleNemoDeleteOutputBuilder outputBuilder = new StructureStyleNemoDeleteOutputBuilder();
\r
206 String errorInfo = deleteIntent.styleNemoDeleteOutput(aaa,input);
\r
208 if (errorInfo != null)
\r
210 outputBuilder.setResultCode(Error).setMessage(errorInfo);
\r
214 outputBuilder.setResultCode(Ok).setMessage("The intent has been handled by user manager successfully.");
\r
215 informresolver = true;
\r
218 return RpcResultBuilder.success(outputBuilder).buildFuture();
\r
222 public Future<RpcResult<StructureStyleNemoUpdateOutput>> structureStyleNemoUpdate(StructureStyleNemoUpdateInput input) {
\r
223 final StructureStyleNemoUpdateOutputBuilder outputBuilder = new StructureStyleNemoUpdateOutputBuilder();
\r
225 String erroInfo = updateIntent.updateIntent(aaa,input);
\r
227 if (erroInfo != null)
\r
229 outputBuilder.setResultCode(Error).setMessage(erroInfo);
\r
233 outputBuilder.setResultCode(Ok).setMessage("The intent has been handled by user manager successfully.");
\r
234 informresolver = true;
\r
237 return RpcResultBuilder.success(outputBuilder).buildFuture();
\r