mirror of
				https://github.com/opennetworkinglab/onos.git
				synced 2025-11-04 10:11:16 +01:00 
			
		
		
		
	Add Tapi Context/Topology/Node/Link builders and utility class
ONOS-7679 Change-Id: I85f856b11a5e272460b38c16ca46212fb4a0a082
This commit is contained in:
		
							parent
							
								
									45197709f3
								
							
						
					
					
						commit
						ec18d3a759
					
				@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class DcsBasedTapiNepRef extends TapiNepRef {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public DcsBasedTapiNepRef(Uuid topologyId, Uuid nodeId, Uuid nepId) {
 | 
				
			||||||
 | 
					        super(topologyId.toString(), nodeId.toString(), nepId.toString());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class DcsBasedTapiNodeRef extends TapiNodeRef {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public DcsBasedTapiNodeRef(Uuid topologyId, Uuid nodeId) {
 | 
				
			||||||
 | 
					        super(topologyId.toString(), nodeId.toString());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObject;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectData;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Utility builder class for TAPI context creation with DCS.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public final class TapiContextBuilder extends TapiInstanceBuilder {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private DefaultContext context;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private TapiContextBuilder(DefaultContext context) {
 | 
				
			||||||
 | 
					        this.context = context;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static TapiContextBuilder builder(DefaultContext context) {
 | 
				
			||||||
 | 
					        return new TapiContextBuilder(context);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public ModelObjectData build() {
 | 
				
			||||||
 | 
					        ModelObjectId objId = ModelObjectId.builder().build();
 | 
				
			||||||
 | 
					        return getModelObjectData(context, objId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public ModelObject getModelObject() {
 | 
				
			||||||
 | 
					        return context;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public Uuid getUuid() {
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,111 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.globalclass.DefaultName;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.globalclass.Name;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObject;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.lang.reflect.InvocationTargetException;
 | 
				
			||||||
 | 
					import java.lang.reflect.Method;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.Map.Entry;
 | 
				
			||||||
 | 
					import java.util.UUID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
 | 
					import static org.slf4j.LoggerFactory.getLogger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Utility methods dealing with TAPI modelObject which includes global class grouping.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * <p> tapi-common@2018-03-07.yang
 | 
				
			||||||
 | 
					 * grouping global-class {
 | 
				
			||||||
 | 
					 *   leaf uuid {
 | 
				
			||||||
 | 
					 *     type uuid;
 | 
				
			||||||
 | 
					 *   }
 | 
				
			||||||
 | 
					 *   list name {
 | 
				
			||||||
 | 
					 *     key 'value-name';
 | 
				
			||||||
 | 
					 *     uses name-and-value;
 | 
				
			||||||
 | 
					 *   }
 | 
				
			||||||
 | 
					 * }
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * grouping name-and-value {
 | 
				
			||||||
 | 
					 *   leaf value-name {
 | 
				
			||||||
 | 
					 *     type string;
 | 
				
			||||||
 | 
					 *     description "The name of the value. The value need not have a name.";
 | 
				
			||||||
 | 
					 *   }
 | 
				
			||||||
 | 
					 *   leaf value {
 | 
				
			||||||
 | 
					 *     type string;
 | 
				
			||||||
 | 
					 *     description "The value";
 | 
				
			||||||
 | 
					 *   }
 | 
				
			||||||
 | 
					 *   description "A scoped name-value pair";
 | 
				
			||||||
 | 
					 * }
 | 
				
			||||||
 | 
					 * </p>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public final class TapiGlobalClassUtil {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final Logger log = getLogger(TapiGlobalClassUtil.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private TapiGlobalClassUtil() {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Generate and set Uuid for the ModelObject.
 | 
				
			||||||
 | 
					     * @param obj ModelObject
 | 
				
			||||||
 | 
					     * @param <T> type of ModelObject
 | 
				
			||||||
 | 
					     * @return generated uuid
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static <T extends ModelObject> Uuid setUuid(T obj) {
 | 
				
			||||||
 | 
					        Uuid uuid = Uuid.of(UUID.randomUUID().toString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @SuppressWarnings("unchecked")
 | 
				
			||||||
 | 
					        Class<T> cls = (Class<T>) obj.getClass();
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Method method = cls.getMethod("uuid", Uuid.class);
 | 
				
			||||||
 | 
					            method.invoke(obj, uuid);
 | 
				
			||||||
 | 
					        } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
 | 
				
			||||||
 | 
					            log.error("Exception thrown", e);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return uuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Add key-value to the ModelObject as "name-and-value" list.
 | 
				
			||||||
 | 
					     * @param obj ModelObject
 | 
				
			||||||
 | 
					     * @param kvs key-value map
 | 
				
			||||||
 | 
					     * @param <T> type of ModelObject
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static <T extends ModelObject> void setNameList(T obj, Map<String, String> kvs) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @SuppressWarnings("unchecked")
 | 
				
			||||||
 | 
					        Class<T> cls = (Class<T>) obj.getClass();
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Method method = cls.getMethod("addToName", Name.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for (Entry<String, String> kv : kvs.entrySet()) {
 | 
				
			||||||
 | 
					                DefaultName prop = new DefaultName();
 | 
				
			||||||
 | 
					                prop.valueName(kv.getKey());
 | 
				
			||||||
 | 
					                prop.value(kv.getValue());
 | 
				
			||||||
 | 
					                method.invoke(obj, prop);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
 | 
				
			||||||
 | 
					            log.error("Exception thrown", e);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,59 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.DefaultModelObjectData;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObject;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectData;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Utility builder class for TAPI modelobject creation with DCS.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public abstract class TapiInstanceBuilder {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static final String ONOS_CP = "onos-cp";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static final String DEVICE_ID = "device_id";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Generate DCS modelObjectData.
 | 
				
			||||||
 | 
					     * @return ModelObjectData to be built
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public abstract ModelObjectData build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get modelObject instance.
 | 
				
			||||||
 | 
					     * @return ModelObject of build target
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public abstract ModelObject getModelObject();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get modelObject uuid.
 | 
				
			||||||
 | 
					     * @return Uuid of build target
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public abstract Uuid getUuid();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ModelObjectData getModelObjectData(ModelObject obj, ModelObjectId objId) {
 | 
				
			||||||
 | 
					        return DefaultModelObjectData.builder()
 | 
				
			||||||
 | 
					                .addModelObject(obj)
 | 
				
			||||||
 | 
					                .identifier(objId)
 | 
				
			||||||
 | 
					                .build();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,83 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.link.DefaultNodeEdgePoint;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.DefaultLink;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.TopologyKeys;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObject;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectData;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Utility builder class for TAPI link creation with DCS.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public final class TapiLinkBuilder extends TapiInstanceBuilder {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Uuid topologyUuid;
 | 
				
			||||||
 | 
					    private DefaultLink link = new DefaultLink();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private TapiLinkBuilder() {
 | 
				
			||||||
 | 
					        setUuid(link);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static TapiLinkBuilder builder() {
 | 
				
			||||||
 | 
					        return new TapiLinkBuilder();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiLinkBuilder setTopologyUuid(Uuid topologyUuid) {
 | 
				
			||||||
 | 
					        this.topologyUuid = topologyUuid;
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiLinkBuilder setNep(TapiNepRef nepRef) {
 | 
				
			||||||
 | 
					        DefaultNodeEdgePoint nep = new DefaultNodeEdgePoint();
 | 
				
			||||||
 | 
					        nep.topologyId(nepRef.getTopologyId());
 | 
				
			||||||
 | 
					        nep.nodeId(nepRef.getNodeId());
 | 
				
			||||||
 | 
					        nep.ownedNodeEdgePointId(nepRef.getNepId());
 | 
				
			||||||
 | 
					        link.addToNodeEdgePoint(nep);
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public ModelObjectData build() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TopologyKeys topologyKey = new TopologyKeys();
 | 
				
			||||||
 | 
					        topologyKey.uuid(topologyUuid);
 | 
				
			||||||
 | 
					        ModelObjectId objId = ModelObjectId.builder()
 | 
				
			||||||
 | 
					                .addChild(DefaultContext.class)
 | 
				
			||||||
 | 
					                .addChild(DefaultTopology.class, topologyKey)
 | 
				
			||||||
 | 
					                .build();
 | 
				
			||||||
 | 
					        return getModelObjectData(link, objId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public ModelObject getModelObject() {
 | 
				
			||||||
 | 
					        return link;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public Uuid getUuid() {
 | 
				
			||||||
 | 
					        return link.uuid();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,118 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import org.onosproject.net.ConnectPoint;
 | 
				
			||||||
 | 
					import org.onosproject.net.Port;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setNameList;
 | 
				
			||||||
 | 
					import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.node.DefaultOwnedNodeEdgePoint;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.nodeedgepoint.DefaultMappedServiceInterfacePoint;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.DefaultNode;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.NodeKeys;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.TopologyKeys;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObject;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectData;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Utility builder class for TAPI nep creation with DCS.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public final class TapiNepBuilder extends TapiInstanceBuilder {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Uuid topologyUuid;
 | 
				
			||||||
 | 
					    private Uuid nodeUuid;
 | 
				
			||||||
 | 
					    private DefaultOwnedNodeEdgePoint nep = new DefaultOwnedNodeEdgePoint();
 | 
				
			||||||
 | 
					    private ConnectPoint cp;
 | 
				
			||||||
 | 
					    private Map<String, String> kvs = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private TapiNepBuilder() {
 | 
				
			||||||
 | 
					        setUuid(nep);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static TapiNepBuilder builder() {
 | 
				
			||||||
 | 
					        return new TapiNepBuilder();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiNepBuilder setTopologyUuid(Uuid topologyUuid) {
 | 
				
			||||||
 | 
					        this.topologyUuid = topologyUuid;
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiNepBuilder setNodeUuid(Uuid nodeUuid) {
 | 
				
			||||||
 | 
					        this.nodeUuid = nodeUuid;
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiNepBuilder setPort(Port port) {
 | 
				
			||||||
 | 
					        cp = new ConnectPoint(port.element().id(), port.number());
 | 
				
			||||||
 | 
					        kvs.put(ONOS_CP, cp.toString());
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiNepBuilder setConnectPoint(ConnectPoint cp) {
 | 
				
			||||||
 | 
					        kvs.put(ONOS_CP, cp.toString());
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiNepBuilder setSip(Uuid sipUuid) {
 | 
				
			||||||
 | 
					        DefaultMappedServiceInterfacePoint mappedSip = new DefaultMappedServiceInterfacePoint();
 | 
				
			||||||
 | 
					        mappedSip.serviceInterfacePointId(sipUuid);
 | 
				
			||||||
 | 
					        nep.addToMappedServiceInterfacePoint(mappedSip);
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ConnectPoint getConnectPoint() {
 | 
				
			||||||
 | 
					        return cp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public ModelObject getModelObject() {
 | 
				
			||||||
 | 
					        return nep;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public Uuid getUuid() {
 | 
				
			||||||
 | 
					        return nep.uuid();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public ModelObjectData build() {
 | 
				
			||||||
 | 
					        setNameList(nep, kvs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TopologyKeys topologyKey = new TopologyKeys();
 | 
				
			||||||
 | 
					        topologyKey.uuid(topologyUuid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        NodeKeys nodeKey = new NodeKeys();
 | 
				
			||||||
 | 
					        nodeKey.uuid(nodeUuid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ModelObjectId objId = ModelObjectId.builder()
 | 
				
			||||||
 | 
					                .addChild(DefaultContext.class)
 | 
				
			||||||
 | 
					                .addChild(DefaultTopology.class, topologyKey)
 | 
				
			||||||
 | 
					                .addChild(DefaultNode.class, nodeKey)
 | 
				
			||||||
 | 
					                .build();
 | 
				
			||||||
 | 
					        return getModelObjectData(nep, objId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.UUID;
 | 
				
			||||||
 | 
					import org.onosproject.net.ConnectPoint;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static com.google.common.base.MoreObjects.toStringHelper;
 | 
				
			||||||
 | 
					import static com.google.common.base.Objects.equal;
 | 
				
			||||||
 | 
					import static java.util.Objects.hash;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class TapiNepRef {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final UUID topologyId;
 | 
				
			||||||
 | 
					    private final UUID nodeId;
 | 
				
			||||||
 | 
					    private final UUID nepId;
 | 
				
			||||||
 | 
					    private UUID sipId;
 | 
				
			||||||
 | 
					    private ConnectPoint cp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getTopologyId() {
 | 
				
			||||||
 | 
					        return topologyId.toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getNodeId() {
 | 
				
			||||||
 | 
					        return nodeId.toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getNepId() {
 | 
				
			||||||
 | 
					        return nepId.toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getSipId() {
 | 
				
			||||||
 | 
					        return sipId.toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ConnectPoint getConnectPoint() {
 | 
				
			||||||
 | 
					        return cp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiNepRef setSipId(String sipId) {
 | 
				
			||||||
 | 
					        this.sipId = UUID.fromString(sipId);
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiNepRef setConnectPoint(ConnectPoint cp) {
 | 
				
			||||||
 | 
					        this.cp = cp;
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiNepRef(String topologyId, String nodeId, String nepId) {
 | 
				
			||||||
 | 
					        this.topologyId = UUID.fromString(topologyId);
 | 
				
			||||||
 | 
					        this.nodeId = UUID.fromString(nodeId);
 | 
				
			||||||
 | 
					        this.nepId = UUID.fromString(nepId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String toString() {
 | 
				
			||||||
 | 
					        return toStringHelper(getClass())
 | 
				
			||||||
 | 
					//                .add("topologyId", topologyId)
 | 
				
			||||||
 | 
					                .add("nodeId", nodeId)
 | 
				
			||||||
 | 
					                .add("nepId", nepId)
 | 
				
			||||||
 | 
					                .add("sipId", sipId)
 | 
				
			||||||
 | 
					                .add("connectPoint", cp)
 | 
				
			||||||
 | 
					                .toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean equals(Object o) {
 | 
				
			||||||
 | 
					        if (this == o) {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!(o instanceof TapiNepRef)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        TapiNepRef that = (TapiNepRef) o;
 | 
				
			||||||
 | 
					        return equal(topologyId, that.topologyId) &&
 | 
				
			||||||
 | 
					                equal(nodeId, that.nodeId) &&
 | 
				
			||||||
 | 
					                equal(nepId, that.nepId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int hashCode() {
 | 
				
			||||||
 | 
					        return hash(topologyId, nodeId, nepId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,90 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setNameList;
 | 
				
			||||||
 | 
					import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.onosproject.net.DeviceId;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.node.OwnedNodeEdgePoint;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.DefaultNode;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.TopologyKeys;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObject;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectData;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Utility builder class for TAPI node creation with DCS.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public final class TapiNodeBuilder extends TapiInstanceBuilder {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Uuid topologyUuid;
 | 
				
			||||||
 | 
					    private DefaultNode node = new DefaultNode();
 | 
				
			||||||
 | 
					    private Map<String, String> kvs = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private TapiNodeBuilder() {
 | 
				
			||||||
 | 
					        setUuid(node);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static TapiNodeBuilder builder() {
 | 
				
			||||||
 | 
					        return new TapiNodeBuilder();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiNodeBuilder setTopologyUuid(Uuid topologyUuid) {
 | 
				
			||||||
 | 
					        this.topologyUuid = topologyUuid;
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiNodeBuilder setNep(OwnedNodeEdgePoint nep) {
 | 
				
			||||||
 | 
					        node.addToOwnedNodeEdgePoint(nep);
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiNodeBuilder setDeviceId(DeviceId deviceId) {
 | 
				
			||||||
 | 
					        kvs.put(DEVICE_ID, deviceId.toString());
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public ModelObject getModelObject() {
 | 
				
			||||||
 | 
					        return node;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public Uuid getUuid() {
 | 
				
			||||||
 | 
					        return node.uuid();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public ModelObjectData build() {
 | 
				
			||||||
 | 
					        setNameList(node, kvs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TopologyKeys topologyKey = new TopologyKeys();
 | 
				
			||||||
 | 
					        topologyKey.uuid(topologyUuid);
 | 
				
			||||||
 | 
					        ModelObjectId objId = ModelObjectId.builder()
 | 
				
			||||||
 | 
					                .addChild(DefaultContext.class)
 | 
				
			||||||
 | 
					                .addChild(DefaultTopology.class, topologyKey)
 | 
				
			||||||
 | 
					                .build();
 | 
				
			||||||
 | 
					        return getModelObjectData(node, objId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.UUID;
 | 
				
			||||||
 | 
					import org.onosproject.net.DeviceId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static com.google.common.base.MoreObjects.toStringHelper;
 | 
				
			||||||
 | 
					import static com.google.common.base.Objects.equal;
 | 
				
			||||||
 | 
					import static java.util.Objects.hash;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class TapiNodeRef {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final UUID topologyId;
 | 
				
			||||||
 | 
					    private final UUID nodeId;
 | 
				
			||||||
 | 
					    private DeviceId deviceId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getNodeId() {
 | 
				
			||||||
 | 
					        return nodeId.toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public DeviceId getDeviceId() {
 | 
				
			||||||
 | 
					        return deviceId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setDeviceId(DeviceId deviceId) {
 | 
				
			||||||
 | 
					        this.deviceId = deviceId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiNodeRef(String topologyId, String nodeId) {
 | 
				
			||||||
 | 
					        this.topologyId = UUID.fromString(topologyId);
 | 
				
			||||||
 | 
					        this.nodeId = UUID.fromString(nodeId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String toString() {
 | 
				
			||||||
 | 
					        return toStringHelper(getClass())
 | 
				
			||||||
 | 
					//                .add("topologyId", topologyId)
 | 
				
			||||||
 | 
					                .add("nodeId", nodeId)
 | 
				
			||||||
 | 
					                .add("deviceId", deviceId)
 | 
				
			||||||
 | 
					                .toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean equals(Object o) {
 | 
				
			||||||
 | 
					        if (this == o) {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!(o instanceof TapiNodeRef)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        TapiNodeRef nodeRef = (TapiNodeRef) o;
 | 
				
			||||||
 | 
					        return equal(topologyId, nodeRef.topologyId) &&
 | 
				
			||||||
 | 
					                equal(nodeId, nodeRef.nodeId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int hashCode() {
 | 
				
			||||||
 | 
					        return hash(topologyId, nodeId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,136 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.NoSuchElementException;
 | 
				
			||||||
 | 
					import org.onosproject.net.ConnectPoint;
 | 
				
			||||||
 | 
					import org.onosproject.net.ElementId;
 | 
				
			||||||
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
 | 
					import static org.slf4j.LoggerFactory.getLogger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * TAPI instance resolver.
 | 
				
			||||||
 | 
					 * FIXME: This resolver should provide DCS read cache
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class TapiResolver {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Logger log = getLogger(getClass());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private List<TapiNodeRef> tapiNodeRefList = new ArrayList<>();
 | 
				
			||||||
 | 
					    private List<TapiNepRef> tapiNepRefList = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Check existence of TAPI node associated with deviceId.
 | 
				
			||||||
 | 
					     * @param deviceId search key
 | 
				
			||||||
 | 
					     * @return boolean
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public boolean hasNodeRef(ElementId deviceId) {
 | 
				
			||||||
 | 
					        return tapiNodeRefList.stream()
 | 
				
			||||||
 | 
					                .anyMatch(node -> node.getDeviceId().equals(deviceId));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Check existence of TAPI nep associated with ConnectPoint.
 | 
				
			||||||
 | 
					     * @param cp search key
 | 
				
			||||||
 | 
					     * @return TapiNepRef
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public boolean hasNepRef(ConnectPoint cp) {
 | 
				
			||||||
 | 
					        return tapiNepRefList.stream()
 | 
				
			||||||
 | 
					                .anyMatch(nep -> nep.getConnectPoint().equals(cp));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Check existence of TAPI nep associated with TAPI sipId.
 | 
				
			||||||
 | 
					     * @param sipId search key
 | 
				
			||||||
 | 
					     * @return TapiNepRef
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public boolean hasNepRef(String sipId) {
 | 
				
			||||||
 | 
					        return tapiNepRefList.stream()
 | 
				
			||||||
 | 
					                .anyMatch(nep -> nep.getSipId().equals(sipId));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Resolve TAPI node associated with deviceId.
 | 
				
			||||||
 | 
					     * @param deviceId search key
 | 
				
			||||||
 | 
					     * @return TapiNodeRef
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public TapiNodeRef getNodeRef(ElementId deviceId) {
 | 
				
			||||||
 | 
					        TapiNodeRef ret = null;
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            ret = tapiNodeRefList.stream()
 | 
				
			||||||
 | 
					                    .filter(node -> node.getDeviceId().equals(deviceId))
 | 
				
			||||||
 | 
					                    .findFirst().get();
 | 
				
			||||||
 | 
					        } catch (NoSuchElementException e) {
 | 
				
			||||||
 | 
					            log.error("Node not found associated with {}", deviceId);
 | 
				
			||||||
 | 
					            throw e;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return ret;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Resolve TAPI nep associated with ConnectPoint.
 | 
				
			||||||
 | 
					     * @param cp search key
 | 
				
			||||||
 | 
					     * @return TapiNepRef
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public TapiNepRef getNepRef(ConnectPoint cp) {
 | 
				
			||||||
 | 
					        TapiNepRef ret = null;
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            ret = tapiNepRefList.stream()
 | 
				
			||||||
 | 
					                    .filter(nep -> nep.getConnectPoint().equals(cp))
 | 
				
			||||||
 | 
					                    .findFirst().get();
 | 
				
			||||||
 | 
					        } catch (NoSuchElementException e) {
 | 
				
			||||||
 | 
					            log.error("Nep not found associated with {}", cp);
 | 
				
			||||||
 | 
					            throw e;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return ret;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Resolve TAPI nep associated with TAPI sipId.
 | 
				
			||||||
 | 
					     * @param sipId search key
 | 
				
			||||||
 | 
					     * @return TapiNepRef
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public TapiNepRef getNepRef(String sipId) {
 | 
				
			||||||
 | 
					        TapiNepRef ret = null;
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            ret = tapiNepRefList.stream()
 | 
				
			||||||
 | 
					                    .filter(nep -> nep.getSipId().equals(sipId))
 | 
				
			||||||
 | 
					                    .findFirst().get();
 | 
				
			||||||
 | 
					        } catch (NoSuchElementException e) {
 | 
				
			||||||
 | 
					            log.error("Nep not found associated with {}", sipId);
 | 
				
			||||||
 | 
					            throw e;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return ret;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiResolver addNodeRef(TapiNodeRef nodeRef) {
 | 
				
			||||||
 | 
					        tapiNodeRefList.add(nodeRef);
 | 
				
			||||||
 | 
					        log.info("Nodes: {}", tapiNodeRefList);
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiResolver addNepRef(TapiNepRef nepRef) {
 | 
				
			||||||
 | 
					        tapiNepRefList.add(nepRef);
 | 
				
			||||||
 | 
					        log.info("Neps: {}", tapiNepRefList);
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,91 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import org.onosproject.net.ConnectPoint;
 | 
				
			||||||
 | 
					import org.onosproject.net.Port;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.LayerProtocolName;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setNameList;
 | 
				
			||||||
 | 
					import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
 | 
				
			||||||
 | 
					import static org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.layerprotocolname.LayerProtocolNameEnum.DSR;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.tapicontext.DefaultServiceInterfacePoint;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObject;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectData;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Utility builder class for TAPI sip creation with DCS.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public final class TapiSipBuilder extends TapiInstanceBuilder {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private DefaultServiceInterfacePoint sip = new DefaultServiceInterfacePoint();
 | 
				
			||||||
 | 
					    private Map<String, String> kvs = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private TapiSipBuilder() {
 | 
				
			||||||
 | 
					        setUuid(sip);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static TapiSipBuilder builder() {
 | 
				
			||||||
 | 
					        return new TapiSipBuilder();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Check this builder dealing with port for SIP or not.
 | 
				
			||||||
 | 
					     * @param port onos port
 | 
				
			||||||
 | 
					     * @return Is this builder for SIP or not
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static boolean isSip(Port port) {
 | 
				
			||||||
 | 
					        // FIXME modify this method to appropriate way
 | 
				
			||||||
 | 
					        ConnectPoint cp = new ConnectPoint(port.element().id(), port.number());
 | 
				
			||||||
 | 
					        return cp.toString().contains("TRANSCEIVER");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TapiSipBuilder setPort(Port port) {
 | 
				
			||||||
 | 
					        if (!isSip(port)) {
 | 
				
			||||||
 | 
					            throw new IllegalStateException("Not allowed to use this port as SIP.");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ConnectPoint cp = new ConnectPoint(port.element().id(), port.number());
 | 
				
			||||||
 | 
					        kvs.put(ONOS_CP, cp.toString());
 | 
				
			||||||
 | 
					        sip.addToLayerProtocolName(LayerProtocolName.of(DSR));
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public ModelObjectData build() {
 | 
				
			||||||
 | 
					        setNameList(sip, kvs);
 | 
				
			||||||
 | 
					        ModelObjectId objId = ModelObjectId.builder()
 | 
				
			||||||
 | 
					                .addChild(DefaultContext.class)
 | 
				
			||||||
 | 
					                .build();
 | 
				
			||||||
 | 
					        return getModelObjectData(sip, objId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public ModelObject getModelObject() {
 | 
				
			||||||
 | 
					        return sip;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public Uuid getUuid() {
 | 
				
			||||||
 | 
					        return sip.uuid();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.context.DefaultAugmentedTapiCommonContext;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObject;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectData;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Utility builder class for TAPI topology creation with DCS.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public final class TapiTopologyBuilder extends TapiInstanceBuilder {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private DefaultTopology topology;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private TapiTopologyBuilder(DefaultTopology topology) {
 | 
				
			||||||
 | 
					        this.topology = topology;
 | 
				
			||||||
 | 
					        setUuid(this.topology);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static TapiTopologyBuilder builder(DefaultTopology topology) {
 | 
				
			||||||
 | 
					        return new TapiTopologyBuilder(topology);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public ModelObjectData build() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        DefaultAugmentedTapiCommonContext topologyContext = new DefaultAugmentedTapiCommonContext();
 | 
				
			||||||
 | 
					        topologyContext.addToTopology(topology);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ModelObjectId objId = ModelObjectId.builder().addChild(DefaultContext.class).build();
 | 
				
			||||||
 | 
					        return getModelObjectData(topologyContext, objId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public ModelObject getModelObject() {
 | 
				
			||||||
 | 
					        return topology;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public Uuid getUuid() {
 | 
				
			||||||
 | 
					        return topology.uuid();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Utilities to deal with onos-yang-tools TAPI objects.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
@ -0,0 +1,116 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2018-present Open Networking Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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 org.onosproject.odtn.utils.tapi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.NoSuchElementException;
 | 
				
			||||||
 | 
					import org.junit.Before;
 | 
				
			||||||
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					import org.onosproject.net.ConnectPoint;
 | 
				
			||||||
 | 
					import org.onosproject.net.DeviceId;
 | 
				
			||||||
 | 
					import org.onosproject.net.PortNumber;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.hamcrest.Matchers.is;
 | 
				
			||||||
 | 
					import static org.junit.Assert.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class TapiResolverTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private TapiResolver tapiResolver;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private TapiNodeRef nodeRef;
 | 
				
			||||||
 | 
					    private TapiNepRef nepRef;
 | 
				
			||||||
 | 
					    private DeviceId deviceId;
 | 
				
			||||||
 | 
					    private ConnectPoint cp;
 | 
				
			||||||
 | 
					    private String sipId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private DeviceId dummyDeviceId;
 | 
				
			||||||
 | 
					    private Integer dummyPort;
 | 
				
			||||||
 | 
					    private ConnectPoint dummyCp;
 | 
				
			||||||
 | 
					    private String dummySipId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Before
 | 
				
			||||||
 | 
					    public void setUp() {
 | 
				
			||||||
 | 
					        nodeRef = new TapiNodeRef(
 | 
				
			||||||
 | 
					                "49e2ac46-3975-44b4-b84f-8fab28222a39",
 | 
				
			||||||
 | 
					                "5638e8e6-ac17-40d9-86e4-7c1febab6f1a");
 | 
				
			||||||
 | 
					        nepRef = new TapiNepRef(
 | 
				
			||||||
 | 
					                "59e2ac46-3975-44b4-b84f-8fab28222a39",
 | 
				
			||||||
 | 
					                "6638e8e6-ac17-40d9-86e4-7c1febab6f1a",
 | 
				
			||||||
 | 
					                "cd673055-e2b2-4f67-88c8-adfae96385bc");
 | 
				
			||||||
 | 
					        deviceId = DeviceId.deviceId("netconf:172.24.3.5:11011");
 | 
				
			||||||
 | 
					        cp = new ConnectPoint(deviceId, PortNumber.portNumber("42"));
 | 
				
			||||||
 | 
					        sipId = "01c39723-7c0d-4754-8d64-fd9ff412404c";
 | 
				
			||||||
 | 
					        nodeRef.setDeviceId(deviceId);
 | 
				
			||||||
 | 
					        nepRef.setConnectPoint(cp).setSipId(sipId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        dummyDeviceId = DeviceId.deviceId("dummy");
 | 
				
			||||||
 | 
					        dummyPort = 4;
 | 
				
			||||||
 | 
					        dummyCp = new ConnectPoint(dummyDeviceId, PortNumber.portNumber(dummyPort));
 | 
				
			||||||
 | 
					        dummySipId = "00000000-0000-0000-0000-000000000000";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        tapiResolver = new TapiResolver();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testGetNodeRef() {
 | 
				
			||||||
 | 
					        assertThat(nodeRef, is(tapiResolver.addNodeRef(nodeRef).getNodeRef(deviceId)));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testGetNepRefWithConnectPoint() {
 | 
				
			||||||
 | 
					        assertThat(nepRef, is(tapiResolver.addNepRef(nepRef).getNepRef(cp)));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testGetNepRefWithSipId() {
 | 
				
			||||||
 | 
					        assertThat(nepRef, is(tapiResolver.addNepRef(nepRef).getNepRef(sipId)));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test(expected = NoSuchElementException.class)
 | 
				
			||||||
 | 
					    public void testGetNodeRefWhenEmpty() {
 | 
				
			||||||
 | 
					        tapiResolver.getNodeRef(deviceId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test(expected = NoSuchElementException.class)
 | 
				
			||||||
 | 
					    public void testGetNepRefWithConnectPointWhenEmpty() {
 | 
				
			||||||
 | 
					        tapiResolver.getNepRef(cp);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test(expected = NoSuchElementException.class)
 | 
				
			||||||
 | 
					    public void testGetNepRefWithSipIdWhenEmpty() {
 | 
				
			||||||
 | 
					        tapiResolver.getNepRef(cp);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test(expected = NoSuchElementException.class)
 | 
				
			||||||
 | 
					    public void testGetNodeRefNotExist() {
 | 
				
			||||||
 | 
					        tapiResolver.addNodeRef(nodeRef);
 | 
				
			||||||
 | 
					        tapiResolver.getNodeRef(dummyDeviceId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test(expected = NoSuchElementException.class)
 | 
				
			||||||
 | 
					    public void testGetNepRefWithConnectPointNotExist() {
 | 
				
			||||||
 | 
					        tapiResolver.addNepRef(nepRef);
 | 
				
			||||||
 | 
					        tapiResolver.getNepRef(dummyCp);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test(expected = NoSuchElementException.class)
 | 
				
			||||||
 | 
					    public void testGetNepRefWithSipIdNotExist() {
 | 
				
			||||||
 | 
					        tapiResolver.addNepRef(nepRef);
 | 
				
			||||||
 | 
					        tapiResolver.getNepRef(dummySipId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -27,7 +27,6 @@ import org.apache.felix.scr.annotations.Component;
 | 
				
			|||||||
import org.apache.felix.scr.annotations.Deactivate;
 | 
					import org.apache.felix.scr.annotations.Deactivate;
 | 
				
			||||||
import org.apache.felix.scr.annotations.Reference;
 | 
					import org.apache.felix.scr.annotations.Reference;
 | 
				
			||||||
import org.apache.felix.scr.annotations.ReferenceCardinality;
 | 
					import org.apache.felix.scr.annotations.ReferenceCardinality;
 | 
				
			||||||
import org.onosproject.net.Device;
 | 
					 | 
				
			||||||
import org.onosproject.net.Link;
 | 
					import org.onosproject.net.Link;
 | 
				
			||||||
import org.onosproject.net.config.NetworkConfigService;
 | 
					import org.onosproject.net.config.NetworkConfigService;
 | 
				
			||||||
import org.onosproject.net.device.DeviceEvent;
 | 
					import org.onosproject.net.device.DeviceEvent;
 | 
				
			||||||
@ -40,15 +39,6 @@ import org.onosproject.odtn.internal.TapiTopologyManager;
 | 
				
			|||||||
import org.slf4j.Logger;
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
import org.slf4j.LoggerFactory;
 | 
					import org.slf4j.LoggerFactory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.onosproject.config.DynamicConfigListener;
 | 
					 | 
				
			||||||
import org.onosproject.config.DynamicConfigService;
 | 
					 | 
				
			||||||
import org.onosproject.config.DynamicConfigEvent;
 | 
					 | 
				
			||||||
import org.onosproject.config.Filter;
 | 
					 | 
				
			||||||
import org.onosproject.config.FailedException;
 | 
					 | 
				
			||||||
import static org.onosproject.config.DynamicConfigEvent.Type.NODE_ADDED;
 | 
					 | 
				
			||||||
import static org.onosproject.config.DynamicConfigEvent.Type.NODE_DELETED;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180216.TapiConnectivity;
 | 
					 | 
				
			||||||
import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.TapiConnectivityService;
 | 
					import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.TapiConnectivityService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.
 | 
					import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.
 | 
				
			||||||
@ -62,7 +52,6 @@ import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.
 | 
				
			|||||||
// onos-yang-tools
 | 
					// onos-yang-tools
 | 
				
			||||||
import org.onosproject.yang.model.DataNode;
 | 
					import org.onosproject.yang.model.DataNode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.onosproject.yang.model.NodeKey;
 | 
					 | 
				
			||||||
import org.onosproject.yang.model.ResourceData;
 | 
					import org.onosproject.yang.model.ResourceData;
 | 
				
			||||||
import org.onosproject.yang.model.DefaultResourceData;
 | 
					import org.onosproject.yang.model.DefaultResourceData;
 | 
				
			||||||
import org.onosproject.yang.model.ModelObject;
 | 
					import org.onosproject.yang.model.ModelObject;
 | 
				
			||||||
@ -70,7 +59,6 @@ import org.onosproject.yang.model.ModelObjectData;
 | 
				
			|||||||
import org.onosproject.yang.model.ModelConverter;
 | 
					import org.onosproject.yang.model.ModelConverter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.onosproject.yang.model.ResourceId;
 | 
					import org.onosproject.yang.model.ResourceId;
 | 
				
			||||||
import org.onosproject.yang.model.SchemaId;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.onosproject.yang.model.RpcRegistry;
 | 
					import org.onosproject.yang.model.RpcRegistry;
 | 
				
			||||||
import org.onosproject.yang.model.RpcService;
 | 
					import org.onosproject.yang.model.RpcService;
 | 
				
			||||||
@ -87,8 +75,8 @@ public class ServiceApplicationComponent {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private final Logger log = LoggerFactory.getLogger(getClass());
 | 
					    private final Logger log = LoggerFactory.getLogger(getClass());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
 | 
					//    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
 | 
				
			||||||
    protected DynamicConfigService dynConfigService;
 | 
					//    protected DynamicConfigService dynConfigService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
 | 
					    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
 | 
				
			||||||
    protected DeviceService deviceService;
 | 
					    protected DeviceService deviceService;
 | 
				
			||||||
@ -115,8 +103,8 @@ public class ServiceApplicationComponent {
 | 
				
			|||||||
    protected TapiTopologyManager tapiTopologyManager;
 | 
					    protected TapiTopologyManager tapiTopologyManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Listener for events from the DCS
 | 
					    // Listener for events from the DCS
 | 
				
			||||||
    private final DynamicConfigListener dynamicConfigServiceListener =
 | 
					//    private final DynamicConfigListener dynamicConfigServiceListener =
 | 
				
			||||||
            new InternalDynamicConfigListener();
 | 
					//            new InternalDynamicConfigListener();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private DeviceListener deviceListener = new InternalDeviceListener();
 | 
					    private DeviceListener deviceListener = new InternalDeviceListener();
 | 
				
			||||||
    private final LinkListener linkListener = new InternalLinkListener();
 | 
					    private final LinkListener linkListener = new InternalLinkListener();
 | 
				
			||||||
@ -129,7 +117,7 @@ public class ServiceApplicationComponent {
 | 
				
			|||||||
    @Activate
 | 
					    @Activate
 | 
				
			||||||
    protected void activate() {
 | 
					    protected void activate() {
 | 
				
			||||||
        log.info("Started");
 | 
					        log.info("Started");
 | 
				
			||||||
        dynConfigService.addListener(dynamicConfigServiceListener);
 | 
					//        dynConfigService.addListener(dynamicConfigServiceListener);
 | 
				
			||||||
        deviceService.addListener(deviceListener);
 | 
					        deviceService.addListener(deviceListener);
 | 
				
			||||||
        linkService.addListener(linkListener);
 | 
					        linkService.addListener(linkListener);
 | 
				
			||||||
        rpcRegistry.registerRpcService(rpcTapiConnectivity);
 | 
					        rpcRegistry.registerRpcService(rpcTapiConnectivity);
 | 
				
			||||||
@ -140,9 +128,9 @@ public class ServiceApplicationComponent {
 | 
				
			|||||||
    protected void deactivate() {
 | 
					    protected void deactivate() {
 | 
				
			||||||
        log.info("Stopped");
 | 
					        log.info("Stopped");
 | 
				
			||||||
        rpcRegistry.unregisterRpcService(rpcTapiConnectivity);
 | 
					        rpcRegistry.unregisterRpcService(rpcTapiConnectivity);
 | 
				
			||||||
        deviceService.removeListener(deviceListener);
 | 
					 | 
				
			||||||
        linkService.removeListener(linkListener);
 | 
					        linkService.removeListener(linkListener);
 | 
				
			||||||
        dynConfigService.removeListener(dynamicConfigServiceListener);
 | 
					        deviceService.removeListener(deviceListener);
 | 
				
			||||||
 | 
					//        dynConfigService.removeListener(dynamicConfigServiceListener);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -158,20 +146,19 @@ public class ServiceApplicationComponent {
 | 
				
			|||||||
         */
 | 
					         */
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public void event(DeviceEvent event) {
 | 
					        public void event(DeviceEvent event) {
 | 
				
			||||||
            Device device = event.subject();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            switch (event.type()) {
 | 
					            switch (event.type()) {
 | 
				
			||||||
                case DEVICE_ADDED:
 | 
					                case DEVICE_ADDED:
 | 
				
			||||||
                    tapiTopologyManager.addDevice(device);
 | 
					                    tapiTopologyManager.addDevice(event.subject());
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                case DEVICE_REMOVED:
 | 
					                case DEVICE_REMOVED:
 | 
				
			||||||
                    tapiTopologyManager.removeDevice(device);
 | 
					                    tapiTopologyManager.removeDevice(event.subject());
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                case PORT_ADDED:
 | 
					                case PORT_ADDED:
 | 
				
			||||||
                    tapiTopologyManager.addPort(device);
 | 
					                    tapiTopologyManager.addPort(event.port());
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                case PORT_REMOVED:
 | 
					                case PORT_REMOVED:
 | 
				
			||||||
                    tapiTopologyManager.removePort(device);
 | 
					                    tapiTopologyManager.removePort(event.port());
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                default:
 | 
					                default:
 | 
				
			||||||
                    log.warn("Unknown Event", event.type());
 | 
					                    log.warn("Unknown Event", event.type());
 | 
				
			||||||
@ -209,100 +196,100 @@ public class ServiceApplicationComponent {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					//    /**
 | 
				
			||||||
     * Representation of internal listener, listening for dynamic config event.
 | 
					//     * Representation of internal listener, listening for dynamic config event.
 | 
				
			||||||
     */
 | 
					//     */
 | 
				
			||||||
    private class InternalDynamicConfigListener implements DynamicConfigListener {
 | 
					//    private class InternalDynamicConfigListener implements DynamicConfigListener {
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
        /**
 | 
					//        /**
 | 
				
			||||||
         * Check if the DCS event should be further processed.
 | 
					//         * Check if the DCS event should be further processed.
 | 
				
			||||||
         *
 | 
					//         *
 | 
				
			||||||
         * @param event config event
 | 
					//         * @param event config event
 | 
				
			||||||
         * @return true if event is supported; false otherwise
 | 
					//         * @return true if event is supported; false otherwise
 | 
				
			||||||
         */
 | 
					//         */
 | 
				
			||||||
        @Override
 | 
					//        @Override
 | 
				
			||||||
        public boolean isRelevant(DynamicConfigEvent event) {
 | 
					//        public boolean isRelevant(DynamicConfigEvent event) {
 | 
				
			||||||
            // Only care about add and delete
 | 
					//            // Only care about add and delete
 | 
				
			||||||
            if ((event.type() != NODE_ADDED) &&
 | 
					//            if ((event.type() != NODE_ADDED) &&
 | 
				
			||||||
                    (event.type() != NODE_DELETED)) {
 | 
					//                    (event.type() != NODE_DELETED)) {
 | 
				
			||||||
                return false;
 | 
					//                return false;
 | 
				
			||||||
            }
 | 
					//            }
 | 
				
			||||||
            return true;
 | 
					//            return true;
 | 
				
			||||||
        }
 | 
					//        }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
        /**
 | 
					//        /**
 | 
				
			||||||
         * Process an Event from the Dynamic Configuration Store.
 | 
					//         * Process an Event from the Dynamic Configuration Store.
 | 
				
			||||||
         *
 | 
					//         *
 | 
				
			||||||
         * @param event config event
 | 
					//         * @param event config event
 | 
				
			||||||
         */
 | 
					//         */
 | 
				
			||||||
        @Override
 | 
					//        @Override
 | 
				
			||||||
        public void event(DynamicConfigEvent event) {
 | 
					//        public void event(DynamicConfigEvent event) {
 | 
				
			||||||
            ResourceId rsId = event.subject();
 | 
					//            ResourceId rsId = event.subject();
 | 
				
			||||||
            DataNode node;
 | 
					//            DataNode node;
 | 
				
			||||||
            try {
 | 
					//            try {
 | 
				
			||||||
                Filter filter = Filter.builder().addCriteria(rsId).build();
 | 
					//                Filter filter = Filter.builder().addCriteria(rsId).build();
 | 
				
			||||||
                node = dynConfigService.readNode(rsId, filter);
 | 
					//                node = dynConfigService.readNode(rsId, filter);
 | 
				
			||||||
            } catch (FailedException e) {
 | 
					//            } catch (FailedException e) {
 | 
				
			||||||
                node = null;
 | 
					//                node = null;
 | 
				
			||||||
            }
 | 
					//            }
 | 
				
			||||||
            switch (event.type()) {
 | 
					//            switch (event.type()) {
 | 
				
			||||||
                case NODE_ADDED:
 | 
					//                case NODE_ADDED:
 | 
				
			||||||
                    onDcsNodeAdded(rsId, node);
 | 
					//                    onDcsNodeAdded(rsId, node);
 | 
				
			||||||
                    break;
 | 
					//                    break;
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
                case NODE_DELETED:
 | 
					//                case NODE_DELETED:
 | 
				
			||||||
                    onDcsNodeDeleted(node);
 | 
					//                    onDcsNodeDeleted(node);
 | 
				
			||||||
                    break;
 | 
					//                    break;
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
                default:
 | 
					//                default:
 | 
				
			||||||
                    log.warn("Unknown Event", event.type());
 | 
					//                    log.warn("Unknown Event", event.type());
 | 
				
			||||||
                    break;
 | 
					//                    break;
 | 
				
			||||||
            }
 | 
					//            }
 | 
				
			||||||
        }
 | 
					//        }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
        /**
 | 
					//        /**
 | 
				
			||||||
         * Process the event that a node has been added to the DCS.
 | 
					//         * Process the event that a node has been added to the DCS.
 | 
				
			||||||
         *
 | 
					//         *
 | 
				
			||||||
         * @param rsId ResourceId of the added node
 | 
					//         * @param rsId ResourceId of the added node
 | 
				
			||||||
         * @param node added node. Access the key and value
 | 
					//         * @param node added node. Access the key and value
 | 
				
			||||||
         */
 | 
					//         */
 | 
				
			||||||
        private void onDcsNodeAdded(ResourceId rsId, DataNode node) {
 | 
					//        private void onDcsNodeAdded(ResourceId rsId, DataNode node) {
 | 
				
			||||||
            switch (node.type()) {
 | 
					//            switch (node.type()) {
 | 
				
			||||||
                case SINGLE_INSTANCE_NODE:
 | 
					//                case SINGLE_INSTANCE_NODE:
 | 
				
			||||||
                    break;
 | 
					//                    break;
 | 
				
			||||||
                case MULTI_INSTANCE_NODE:
 | 
					//                case MULTI_INSTANCE_NODE:
 | 
				
			||||||
                    break;
 | 
					//                    break;
 | 
				
			||||||
                case SINGLE_INSTANCE_LEAF_VALUE_NODE:
 | 
					//                case SINGLE_INSTANCE_LEAF_VALUE_NODE:
 | 
				
			||||||
                    break;
 | 
					//                    break;
 | 
				
			||||||
                case MULTI_INSTANCE_LEAF_VALUE_NODE:
 | 
					//                case MULTI_INSTANCE_LEAF_VALUE_NODE:
 | 
				
			||||||
                    break;
 | 
					//                    break;
 | 
				
			||||||
                default:
 | 
					//                default:
 | 
				
			||||||
                    break;
 | 
					//                    break;
 | 
				
			||||||
            }
 | 
					//            }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
            NodeKey dataNodeKey = node.key();
 | 
					//            NodeKey dataNodeKey = node.key();
 | 
				
			||||||
            SchemaId schemaId = dataNodeKey.schemaId();
 | 
					//            SchemaId schemaId = dataNodeKey.schemaId();
 | 
				
			||||||
            if (!schemaId.namespace().contains("tapi")) {
 | 
					//            if (!schemaId.namespace().contains("tapi")) {
 | 
				
			||||||
                return;
 | 
					//                return;
 | 
				
			||||||
            }
 | 
					//            }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
            // Consolidate events
 | 
					//            // Consolidate events
 | 
				
			||||||
//            log.info("namespace {}", schemaId.namespace());
 | 
					//            log.info("namespace {}", schemaId.namespace());
 | 
				
			||||||
        }
 | 
					//        }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
        /**
 | 
					//        /**
 | 
				
			||||||
         * Process the event that a node has been deleted from the DCS.
 | 
					//         * Process the event that a node has been deleted from the DCS.
 | 
				
			||||||
         *
 | 
					//         *
 | 
				
			||||||
         * @param dataNode data node
 | 
					//         * @param dataNode data node
 | 
				
			||||||
         */
 | 
					//         */
 | 
				
			||||||
        private void onDcsNodeDeleted(DataNode dataNode) {
 | 
					//        private void onDcsNodeDeleted(DataNode dataNode) {
 | 
				
			||||||
            // TODO: Implement release logic
 | 
					//            // TODO: Implement release logic
 | 
				
			||||||
        }
 | 
					//        }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private class TapiConnectivityRpc implements TapiConnectivityService {
 | 
					    private class TapiConnectivityRpc implements TapiConnectivityService {
 | 
				
			||||||
@ -316,6 +303,7 @@ public class ServiceApplicationComponent {
 | 
				
			|||||||
         */
 | 
					         */
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public RpcOutput createConnectivityService(RpcInput inputVar) {
 | 
					        public RpcOutput createConnectivityService(RpcInput inputVar) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            DataNode data = inputVar.data();
 | 
					            DataNode data = inputVar.data();
 | 
				
			||||||
            ResourceId rid = inputVar.id();
 | 
					            ResourceId rid = inputVar.id();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -16,24 +16,52 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package org.onosproject.odtn.internal;
 | 
					package org.onosproject.odtn.internal;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
import org.apache.felix.scr.annotations.Activate;
 | 
					import org.apache.felix.scr.annotations.Activate;
 | 
				
			||||||
import org.apache.felix.scr.annotations.Component;
 | 
					import org.apache.felix.scr.annotations.Component;
 | 
				
			||||||
import org.apache.felix.scr.annotations.Deactivate;
 | 
					import org.apache.felix.scr.annotations.Deactivate;
 | 
				
			||||||
import org.apache.felix.scr.annotations.Reference;
 | 
					import org.apache.felix.scr.annotations.Reference;
 | 
				
			||||||
import org.apache.felix.scr.annotations.ReferenceCardinality;
 | 
					import org.apache.felix.scr.annotations.ReferenceCardinality;
 | 
				
			||||||
import org.apache.felix.scr.annotations.Service;
 | 
					import org.apache.felix.scr.annotations.Service;
 | 
				
			||||||
 | 
					import org.onlab.util.XmlString;
 | 
				
			||||||
import org.onosproject.config.DynamicConfigService;
 | 
					import org.onosproject.config.DynamicConfigService;
 | 
				
			||||||
import org.onosproject.config.FailedException;
 | 
					import org.onosproject.config.FailedException;
 | 
				
			||||||
import org.onosproject.config.Filter;
 | 
					import org.onosproject.config.Filter;
 | 
				
			||||||
import org.onosproject.d.config.DeviceResourceIds;
 | 
					import org.onosproject.d.config.DeviceResourceIds;
 | 
				
			||||||
import org.onosproject.d.config.ResourceIds;
 | 
					 | 
				
			||||||
import org.onosproject.net.Device;
 | 
					 | 
				
			||||||
import org.onosproject.net.Link;
 | 
					 | 
				
			||||||
import org.onosproject.yang.model.DataNode;
 | 
					 | 
				
			||||||
import org.onosproject.yang.model.InnerNode;
 | 
					 | 
				
			||||||
import org.slf4j.Logger;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static org.onosproject.d.config.DeviceResourceIds.DCS_NAMESPACE;
 | 
					import static org.onosproject.d.config.DeviceResourceIds.DCS_NAMESPACE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.onosproject.d.config.ResourceIds;
 | 
				
			||||||
 | 
					import org.onosproject.net.ConnectPoint;
 | 
				
			||||||
 | 
					import org.onosproject.net.Device;
 | 
				
			||||||
 | 
					import org.onosproject.net.DeviceId;
 | 
				
			||||||
 | 
					import org.onosproject.net.Link;
 | 
				
			||||||
 | 
					import org.onosproject.net.Port;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.onosproject.odtn.utils.YangToolUtil.toCharSequence;
 | 
				
			||||||
 | 
					import static org.onosproject.odtn.utils.YangToolUtil.toCompositeData;
 | 
				
			||||||
 | 
					import static org.onosproject.odtn.utils.YangToolUtil.toXmlCompositeStream;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.onosproject.odtn.utils.tapi.TapiLinkBuilder;
 | 
				
			||||||
 | 
					import org.onosproject.odtn.utils.tapi.TapiNepRef;
 | 
				
			||||||
 | 
					import org.onosproject.odtn.utils.tapi.TapiNodeRef;
 | 
				
			||||||
 | 
					import org.onosproject.odtn.utils.tapi.TapiResolver;
 | 
				
			||||||
 | 
					import org.onosproject.odtn.utils.tapi.TapiContextBuilder;
 | 
				
			||||||
 | 
					import org.onosproject.odtn.utils.tapi.TapiNepBuilder;
 | 
				
			||||||
 | 
					import org.onosproject.odtn.utils.tapi.TapiNodeBuilder;
 | 
				
			||||||
 | 
					import org.onosproject.odtn.utils.tapi.TapiSipBuilder;
 | 
				
			||||||
 | 
					import org.onosproject.odtn.utils.tapi.TapiTopologyBuilder;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
 | 
				
			||||||
 | 
					import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.DataNode;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.InnerNode;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelConverter;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ModelObjectData;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ResourceData;
 | 
				
			||||||
 | 
					import org.onosproject.yang.model.ResourceId;
 | 
				
			||||||
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static org.slf4j.LoggerFactory.getLogger;
 | 
					import static org.slf4j.LoggerFactory.getLogger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -48,9 +76,19 @@ public class DcsBasedTapiTopologyManager implements TapiTopologyManager {
 | 
				
			|||||||
    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
 | 
					    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
 | 
				
			||||||
    protected DynamicConfigService dcs;
 | 
					    protected DynamicConfigService dcs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
 | 
				
			||||||
 | 
					    protected ModelConverter modelConverter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private DefaultContext context = new DefaultContext();
 | 
				
			||||||
 | 
					    private DefaultTopology topology = new DefaultTopology();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private TapiResolver tapiResolver = new TapiResolver();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Activate
 | 
					    @Activate
 | 
				
			||||||
    public void activate() {
 | 
					    public void activate() {
 | 
				
			||||||
        initDcsIfRootNotExist();
 | 
					        initDcsIfRootNotExist();
 | 
				
			||||||
 | 
					        initDcsTapiContext();
 | 
				
			||||||
 | 
					        initDcsTapiTopology();
 | 
				
			||||||
        log.info("Started");
 | 
					        log.info("Started");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -62,6 +100,18 @@ public class DcsBasedTapiTopologyManager implements TapiTopologyManager {
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void addDevice(Device device) {
 | 
					    public void addDevice(Device device) {
 | 
				
			||||||
        log.info("Add device: {}", device);
 | 
					        log.info("Add device: {}", device);
 | 
				
			||||||
 | 
					        DeviceId deviceId = device.id();
 | 
				
			||||||
 | 
					        if (tapiResolver.hasNodeRef(deviceId)) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        TapiNodeBuilder builder = TapiNodeBuilder.builder()
 | 
				
			||||||
 | 
					                .setTopologyUuid(topology.uuid())
 | 
				
			||||||
 | 
					                .setDeviceId(deviceId);
 | 
				
			||||||
 | 
					        addModelObjectDataToDcs(builder.build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TapiNodeRef nodeRef = new TapiNodeRef(topology.uuid().toString(), builder.getUuid().toString());
 | 
				
			||||||
 | 
					        nodeRef.setDeviceId(deviceId);
 | 
				
			||||||
 | 
					        tapiResolver.addNodeRef(nodeRef);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@ -72,6 +122,22 @@ public class DcsBasedTapiTopologyManager implements TapiTopologyManager {
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void addLink(Link link) {
 | 
					    public void addLink(Link link) {
 | 
				
			||||||
        log.info("Add link: {}", link);
 | 
					        log.info("Add link: {}", link);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // validation check
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // src nep
 | 
				
			||||||
 | 
					        addNep(link.src());
 | 
				
			||||||
 | 
					        addNep(link.dst());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // link
 | 
				
			||||||
 | 
					        TapiNepRef srcNepRef = tapiResolver.getNepRef(link.src());
 | 
				
			||||||
 | 
					        TapiNepRef dstNepRef = tapiResolver.getNepRef(link.dst());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TapiLinkBuilder linkBuilder = TapiLinkBuilder.builder()
 | 
				
			||||||
 | 
					                .setTopologyUuid(topology.uuid())
 | 
				
			||||||
 | 
					                .setNep(srcNepRef)
 | 
				
			||||||
 | 
					                .setNep(dstNepRef);
 | 
				
			||||||
 | 
					        addModelObjectDataToDcs(linkBuilder.build());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@ -80,13 +146,94 @@ public class DcsBasedTapiTopologyManager implements TapiTopologyManager {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void addPort(Device device) {
 | 
					    public void addPort(Port port) {
 | 
				
			||||||
        log.info("Add port: {}", device);
 | 
					        log.info("Add port: {}", port);
 | 
				
			||||||
 | 
					        if (tapiResolver.hasNepRef(new ConnectPoint(port.element().id(), port.number()))) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TapiNodeRef nodeRef = tapiResolver.getNodeRef(port.element().id());
 | 
				
			||||||
 | 
					        String nodeId = nodeRef.getNodeId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // nep
 | 
				
			||||||
 | 
					        TapiNepBuilder nepBuilder = TapiNepBuilder.builder()
 | 
				
			||||||
 | 
					                .setPort(port)
 | 
				
			||||||
 | 
					                .setTopologyUuid(topology.uuid())
 | 
				
			||||||
 | 
					                .setNodeUuid(Uuid.fromString(nodeId));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TapiNepRef nepRef = new TapiNepRef(topology.uuid().toString(), nodeId, nepBuilder.getUuid().toString());
 | 
				
			||||||
 | 
					        nepRef.setConnectPoint(nepBuilder.getConnectPoint());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // sip
 | 
				
			||||||
 | 
					        if (TapiSipBuilder.isSip(port)) {
 | 
				
			||||||
 | 
					            TapiSipBuilder sipBuilder = TapiSipBuilder.builder().setPort(port);
 | 
				
			||||||
 | 
					            nepBuilder.setSip(sipBuilder.getUuid());
 | 
				
			||||||
 | 
					            nepRef.setSipId(sipBuilder.getUuid().toString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            addModelObjectDataToDcs(sipBuilder.build());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        addModelObjectDataToDcs(nepBuilder.build());
 | 
				
			||||||
 | 
					        tapiResolver.addNepRef(nepRef);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void removePort(Device device) {
 | 
					    public void removePort(Port port) {
 | 
				
			||||||
        log.info("Remove port: {}", device);
 | 
					        log.info("Remove port: {}", port);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void addNep(ConnectPoint cp) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        log.info("device Id: {}", cp.deviceId());
 | 
				
			||||||
 | 
					        TapiNodeRef nodeRef = tapiResolver.getNodeRef(cp.deviceId());
 | 
				
			||||||
 | 
					        String nodeId = nodeRef.getNodeId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TapiNepBuilder nepBuilder = TapiNepBuilder.builder()
 | 
				
			||||||
 | 
					                .setConnectPoint(cp)
 | 
				
			||||||
 | 
					                .setTopologyUuid(topology.uuid())
 | 
				
			||||||
 | 
					                .setNodeUuid(Uuid.fromString(nodeId));
 | 
				
			||||||
 | 
					        TapiNepRef nepRef = new TapiNepRef(topology.uuid().toString(), nodeId, nepBuilder.getUuid().toString());
 | 
				
			||||||
 | 
					        nepRef.setConnectPoint(cp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        addModelObjectDataToDcs(nepBuilder.build());
 | 
				
			||||||
 | 
					        tapiResolver.addNepRef(nepRef);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void initDcsTapiContext() {
 | 
				
			||||||
 | 
					        TapiContextBuilder builder = TapiContextBuilder.builder(context);
 | 
				
			||||||
 | 
					        addModelObjectDataToDcs(builder.build());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void initDcsTapiTopology() {
 | 
				
			||||||
 | 
					        TapiTopologyBuilder builder = TapiTopologyBuilder.builder(topology);
 | 
				
			||||||
 | 
					        addModelObjectDataToDcs(builder.build());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // FIXME: move DCS-related methods to DCS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void addModelObjectDataToDcs(ModelObjectData input) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ResourceData rnode = modelConverter.createDataNode(input);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // for debug
 | 
				
			||||||
 | 
					        CharSequence strNode = toCharSequence(toXmlCompositeStream(toCompositeData(rnode)));
 | 
				
			||||||
 | 
					        log.info("XML:\n{}", XmlString.prettifyXml(strNode));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        addResourceDataToDcs(rnode);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void addResourceDataToDcs(ResourceData input) {
 | 
				
			||||||
 | 
					        addResourceDataToDcs(input, input.resourceId());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void addResourceDataToDcs(ResourceData input, ResourceId rid) {
 | 
				
			||||||
 | 
					        if (input == null || input.dataNodes() == null) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        List<DataNode> dataNodes = input.dataNodes();
 | 
				
			||||||
 | 
					        for (DataNode node : dataNodes) {
 | 
				
			||||||
 | 
					            dcs.createNode(rid, node);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void initDcsIfRootNotExist() {
 | 
					    private void initDcsIfRootNotExist() {
 | 
				
			||||||
@ -116,4 +263,5 @@ public class DcsBasedTapiTopologyManager implements TapiTopologyManager {
 | 
				
			|||||||
            log.info("'root' was created without error, but still not there. WTF!");
 | 
					            log.info("'root' was created without error, but still not there. WTF!");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -18,18 +18,46 @@ package org.onosproject.odtn.internal;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import org.onosproject.net.Device;
 | 
					import org.onosproject.net.Device;
 | 
				
			||||||
import org.onosproject.net.Link;
 | 
					import org.onosproject.net.Link;
 | 
				
			||||||
 | 
					import org.onosproject.net.Port;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * ODTN Tapi manager application interface.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
public interface TapiTopologyManager {
 | 
					public interface TapiTopologyManager {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * DEVICE_ADDED event handler.
 | 
				
			||||||
 | 
					     * @param device device to be added
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    void addDevice(Device device);
 | 
					    void addDevice(Device device);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * DEVICE_REMOVED event handler.
 | 
				
			||||||
 | 
					     * @param device device to be removed
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    void removeDevice(Device device);
 | 
					    void removeDevice(Device device);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * LINK_ADDED event handler.
 | 
				
			||||||
 | 
					     * @param link link to be added
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    void addLink(Link link);
 | 
					    void addLink(Link link);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * LINK_REMOVED event handler.
 | 
				
			||||||
 | 
					     * @param link link to be removed
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    void removeLink(Link link);
 | 
					    void removeLink(Link link);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void addPort(Device device);
 | 
					    /**
 | 
				
			||||||
 | 
					     * PORT_ADDED event handler.
 | 
				
			||||||
 | 
					     * @param port port to be added
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    void addPort(Port port);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void removePort(Device device);
 | 
					    /**
 | 
				
			||||||
 | 
					     * PORT_REMOVED event handler.
 | 
				
			||||||
 | 
					     * @param port port to be removed
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    void removePort(Port port);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -174,6 +174,16 @@ public class OpenConfigDeviceDiscovery
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        switch (type) {
 | 
					        switch (type) {
 | 
				
			||||||
        case "oc-platform-types:PORT":
 | 
					        case "oc-platform-types:PORT":
 | 
				
			||||||
 | 
					        case "oc-opt-types:OPTICAL_CHANNEL":
 | 
				
			||||||
 | 
					            // TODO assign appropriate port type & annotations at some point
 | 
				
			||||||
 | 
					            // for now we just need a Port with annotations
 | 
				
			||||||
 | 
					            builder.type(Type.OCH);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Just a heuristics to deal with simple transponder
 | 
				
			||||||
 | 
					            // if the device declare odtn-connection-id, just use them
 | 
				
			||||||
 | 
					            // if not assign same value to relevant ports types
 | 
				
			||||||
 | 
					            props.putIfAbsent(CONNECTION_ID, "the-only-one");
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
        case "oc-platform-types:TRANSCEIVER":
 | 
					        case "oc-platform-types:TRANSCEIVER":
 | 
				
			||||||
        //case "oc-opt-types:OPTICAL_CHANNEL":
 | 
					        //case "oc-opt-types:OPTICAL_CHANNEL":
 | 
				
			||||||
            // TODO assign appropriate port type & annotations at some point
 | 
					            // TODO assign appropriate port type & annotations at some point
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user