org.openbaton.vnfm.dummy.DummyAMQPVNFManager.java Source code

Java tutorial

Introduction

Here is the source code for org.openbaton.vnfm.dummy.DummyAMQPVNFManager.java

Source

/*
 * Copyright (c) 2015 Fraunhofer FOKUS
 *
 * 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.openbaton.vnfm.dummy;

import org.openbaton.catalogue.mano.common.Event;
import org.openbaton.catalogue.mano.common.LifecycleEvent;
import org.openbaton.catalogue.mano.descriptor.VirtualDeploymentUnit;
import org.openbaton.catalogue.mano.record.VNFCInstance;
import org.openbaton.catalogue.mano.record.VNFRecordDependency;
import org.openbaton.catalogue.mano.record.VirtualNetworkFunctionRecord;
import org.openbaton.catalogue.nfvo.Action;
import org.openbaton.catalogue.nfvo.ConfigurationParameter;
import org.openbaton.catalogue.nfvo.DependencyParameters;
import org.openbaton.catalogue.nfvo.VimInstance;
import org.openbaton.common.vnfm_sdk.amqp.AbstractVnfmSpringAmqp;
import org.springframework.boot.SpringApplication;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * Created by lto on 27/05/15.
 */
public class DummyAMQPVNFManager extends AbstractVnfmSpringAmqp {

    protected void setVnfmHelper() {
    }

    /**
     * This operation allows creating a VNF instance.
     *
     * @param virtualNetworkFunctionRecord
     * @param scripts
     */
    @Override
    public VirtualNetworkFunctionRecord instantiate(VirtualNetworkFunctionRecord virtualNetworkFunctionRecord,
            Object scripts, Map<String, Collection<VimInstance>> vimInstances) throws Exception {
        log.info("Instantiation of VirtualNetworkFunctionRecord " + virtualNetworkFunctionRecord.getName());

        // vnfmHelper.saveScriptOnEms(virtualNetworkFunctionRecord, scripts);

        log.debug("added parameter to config");
        log.debug("CONFIGURATION: " + virtualNetworkFunctionRecord.getConfigurations());
        ConfigurationParameter cp = new ConfigurationParameter();
        cp.setConfKey("new_key");
        cp.setValue("new_value");
        virtualNetworkFunctionRecord.getConfigurations().getConfigurationParameters().add(cp);

        Thread.sleep((int) (Math.random() * 5000) + 4000);

        return virtualNetworkFunctionRecord;
    }

    @Override
    public void query() {
    }

    @Override
    public VirtualNetworkFunctionRecord scale(Action scaleInOrOut,
            VirtualNetworkFunctionRecord virtualNetworkFunctionRecord, VNFCInstance component, Object scripts,
            VNFRecordDependency dependency) throws Exception {
        Thread.sleep((int) (Math.random() * 500) + 1000);
        return virtualNetworkFunctionRecord;
    }

    @Override
    public void checkInstantiationFeasibility() {
    }

    @Override
    public VirtualNetworkFunctionRecord heal(VirtualNetworkFunctionRecord vnfr, VNFCInstance vnfcInstance,
            String s) {
        return vnfr;
    }

    @Override
    public void updateSoftware() {
    }

    @Override
    public VirtualNetworkFunctionRecord modify(VirtualNetworkFunctionRecord virtualNetworkFunctionRecord,
            VNFRecordDependency dependency) throws InterruptedException {
        log.debug("VirtualNetworkFunctionRecord VERSION is: " + virtualNetworkFunctionRecord.getHb_version());
        log.debug("VirtualNetworkFunctionRecord NAME is: " + virtualNetworkFunctionRecord.getName());
        log.debug("Got dependency: " + dependency);
        log.debug("Parameters are: ");
        for (Map.Entry<String, DependencyParameters> entry : dependency.getParameters().entrySet()) {
            log.debug("Source type: " + entry.getKey());
            log.debug("Parameters: " + entry.getValue().getParameters());
        }
        Thread.sleep(3000 + ((int) (Math.random() * 7000)));
        return virtualNetworkFunctionRecord;
    }

    @Override
    public void upgradeSoftware() {
    }

    @Override
    public VirtualNetworkFunctionRecord terminate(VirtualNetworkFunctionRecord virtualNetworkFunctionRecord) {
        log.debug("RELEASE_RESOURCES");
        log.info("Releasing resources for VNFR: " + virtualNetworkFunctionRecord.getName());
        log.trace("Verison is: " + virtualNetworkFunctionRecord.getHb_version());
        List<Event> events = new ArrayList<>();

        for (LifecycleEvent event : virtualNetworkFunctionRecord.getLifecycle_event()) {
            events.add(event.getEvent());
        }

        if (events.contains(Event.RELEASE)) {
            for (VirtualDeploymentUnit vdu : virtualNetworkFunctionRecord.getVdu())
                log.debug("Removing vdu: " + vdu);

            try {
                Thread.sleep(1000 + ((int) (Math.random() * 4000)));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return virtualNetworkFunctionRecord;
    }

    @Override
    public void handleError(VirtualNetworkFunctionRecord virtualNetworkFunctionRecord) {
        log.error("Error for vnfr: " + virtualNetworkFunctionRecord.getName());
    }

    @Override
    public VirtualNetworkFunctionRecord start(VirtualNetworkFunctionRecord virtualNetworkFunctionRecord)
            throws InterruptedException {
        log.debug("VirtualNetworkFunctionRecord VERSION is: " + virtualNetworkFunctionRecord.getHb_version());
        Thread.sleep((int) (Math.random() * 2000) + 2000);
        return virtualNetworkFunctionRecord;
    }

    @Override
    public VirtualNetworkFunctionRecord stop(VirtualNetworkFunctionRecord virtualNetworkFunctionRecord)
            throws Exception {
        log.info("Stop VNFR " + virtualNetworkFunctionRecord.getName());
        return virtualNetworkFunctionRecord;
    }

    @Override
    public VirtualNetworkFunctionRecord startVNFCInstance(VirtualNetworkFunctionRecord virtualNetworkFunctionRecord,
            VNFCInstance vnfcInstance) throws Exception {
        log.info("Start VNFCInstance " + vnfcInstance.getHostname() + " with id " + vnfcInstance.getId());
        return virtualNetworkFunctionRecord;
    }

    @Override
    public VirtualNetworkFunctionRecord stopVNFCInstance(VirtualNetworkFunctionRecord virtualNetworkFunctionRecord,
            VNFCInstance vnfcInstance) throws Exception {
        log.info("Stop VNFCInstance " + vnfcInstance.getHostname() + " with id " + vnfcInstance.getId());
        return virtualNetworkFunctionRecord;
    }

    @Override
    public VirtualNetworkFunctionRecord configure(VirtualNetworkFunctionRecord virtualNetworkFunctionRecord)
            throws InterruptedException {
        Thread.sleep((int) (Math.random() * 5000));
        return virtualNetworkFunctionRecord;
    }

    public static void main(String[] args) {
        SpringApplication.run(DummyAMQPVNFManager.class, args);
    }

    @Override
    public void NotifyChange() {
    }

    @Override
    protected void checkEmsStarted(String hostname) {
    }

    @Override
    protected void checkEMS(String hostname) {
        return;
    }
}