Jian Li
Committed by Gerrit Code Review

[ONOS-3498] Add skeleton codes for control plane management;

Change-Id: I741d2b7ed67f35179613c274b9efe375997213eb
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2014 Open Networking Laboratory
~
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>onos-app-cpman</artifactId>
<packaging>bundle</packaging>
<description>Control Plane Management Application</description>
<dependencies>
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-api</artifactId>
<version>1.4.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
/*
* Copyright 2015 Open Networking Laboratory
*
* 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.cpman;
/**
* Abstracted Control Message Type.
*/
public enum ControlMessageType {
/** Mapped to PACKET-IN message of OpenFlow. */
INBOUND_PACKET,
/** Mapped to PACKET-OUT message of OpenFlow. */
OUTBOUND_PACKET,
/** Mapped to FLOW-MOD message of OpenFlow. */
FLOW_MOD_PACKET,
/** Mapped to FLOW-REMOVED message of OpenFlow. */
FLOW_REMOVED_PACKET,
/** Mapped to STATS-REQUEST message of OpenFlow. */
REQUEST_PACKET,
/** Mapped to STATS-REPLY message of OpenFlow. */
REPLY_PACKET,
/** All message types. */
ALL
}
/*
* Copyright 2015 Open Networking Laboratory
*
* 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.cpman;
/**
* A set of metric type used in control plane.
*/
public enum ControlMetricType {
/** Racket Rate of Control Message. */
PacketRate,
/** Byte Rate of Control Message. */
ByteRate,
/** Cpu Utilization. */
CpuInfo,
/** Memory Utilization. */
MemoryInfo
}
/*
* Copyright 2015 Open Networking Laboratory
*
* 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.cpman;
import org.onosproject.net.statistic.Load;
import java.util.concurrent.TimeUnit;
/**
* Data repository for control plane load information.
*/
public interface ControlPlaneLoad extends Load {
/**
* Obtain the average of the specified time duration.
*
* @param duration time duration
* @param unit time unit
* @return average control plane metric value
*/
long average(int duration, TimeUnit unit);
/**
* Obtain the average of all time duration.
*
* @return average control plane metric value
*/
long average();
}
/*
* Copyright 2015 Open Networking Laboratory
*
* 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.cpman;
import com.sun.jndi.toolkit.ctx.ComponentContext;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Modified;
import org.slf4j.Logger;
import static org.slf4j.LoggerFactory.getLogger;
/**
* Control plane management application.
*/
public class ControlPlaneManager {
private final Logger log = getLogger(getClass());
@Activate
public void activate(ComponentContext context) {
}
@Deactivate
public void deactivate() {
}
@Modified
public void modified(ComponentContext context) {
}
}
\ No newline at end of file
/*
* Copyright 2015 Open Networking Laboratory
*
* 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.cpman;
/**
* Include various control plane metrics.
*/
public class ControlPlaneMetric {
private ControlMetricType metricType;
private long metricValue;
ControlMetricType metricType() {
return metricType;
}
void setMetricType(ControlMetricType metricType) {
this.metricType = metricType;
}
long metricValue() {
return metricValue;
}
void setMetricValue(long metricValue) {
this.metricValue = metricValue;
}
}
/*
* Copyright 2015 Open Networking Laboratory
*
* 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.cpman;
import org.onosproject.cluster.NodeId;
import org.onosproject.net.DeviceId;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
/**
* Control Plane Statistics Service Interface.
*/
public interface ControlPlaneStatsService {
/**
* Add a new control plane metric value with a certain update interval.
*
* @param cpm control plane metric (e.g., control message rate, cpu, memory, etc.)
* @param updateInterval value update interval (time unit will be in minute)
*/
void updateMetric(ControlPlaneMetric cpm, int updateInterval);
/**
* Obtain the control plane load of a specific device.
*
* @param nodeId node id {@link org.onosproject.cluster.NodeId}
* @param type control metric type
* @param deviceId device id {@link org.onosproject.net.DeviceId}
* @return control plane load
*/
ControlPlaneLoad getLoad(NodeId nodeId, ControlMetricType type, Optional<DeviceId> deviceId);
/**
* Obtain the control plane load of a specific device with a specific time duration.
*
* @param nodeId node id {@link org.onosproject.cluster.NodeId}
* @param type control metric type
* @param duration time duration
* @param unit time unit
* @param deviceId device id {@link org.onosproject.net.Device}
* @return control plane load
*/
ControlPlaneLoad getLoad(NodeId nodeId, ControlMetricType type, Optional<DeviceId> deviceId,
int duration, TimeUnit unit);
}
\ No newline at end of file
/*
* Copyright 2015 Open Networking Laboratory
*
* 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.
*/
/**
* Application for control plane management.
*/
package org.onosproject.cpman;
\ No newline at end of file
......@@ -60,6 +60,7 @@
<module>mlb</module>
<module>openstackswitching</module>
<module>pathpainter</module>
<module>cpman</module>
</modules>
<properties>
......