Remove deprecated modules. 42/24442/5
authorAlexis de Talhouët <adetalhouet@inocybe.com>
Wed, 22 Jul 2015 21:33:15 +0000 (17:33 -0400)
committerAlexis de Talhouët <adetalhouet@inocybe.com>
Wed, 22 Jul 2015 22:49:37 +0000 (18:49 -0400)
Thoses modules were deprecated in Lithium, and now obsolete for Berryllium.

Change-Id: I938f337c06381bce10fc30574aabb569b975a3e2
Signed-off-by: Alexis de Talhouët <adetalhouet@inocybe.com>
56 files changed:
features-packetcable/pom.xml [deleted file]
features-packetcable/src/main/resources/features.xml [deleted file]
packetcable-client/a_cmts1.json [deleted file]
packetcable-client/a_cmts1.xml [deleted file]
packetcable-client/a_cmts2.json [deleted file]
packetcable-client/a_cmts2.xml [deleted file]
packetcable-client/a_cmts3.json [deleted file]
packetcable-client/base.text [deleted file]
packetcable-client/cableflow1.json [deleted file]
packetcable-client/cableflow1.xml [deleted file]
packetcable-client/cableflow2.json [deleted file]
packetcable-client/cableflow2.xml [deleted file]
packetcable-client/cableflow3.json [deleted file]
packetcable-client/cableflow3.xml [deleted file]
packetcable-client/cableflow4.json [deleted file]
packetcable-client/cableflow4.xml [deleted file]
packetcable-client/cableflow5.json [deleted file]
packetcable-client/cableflow5.xml [deleted file]
packetcable-client/cableflow7.json [deleted file]
packetcable-client/cableflow7.xml [deleted file]
packetcable-client/cableflow8.json [deleted file]
packetcable-client/cableflow8.xml [deleted file]
packetcable-client/flow_config_perf_pcmm.py [deleted file]
packetcable-client/make_json.sh [deleted file]
packetcable-client/make_xml.sh [deleted file]
packetcable-client/openflowmininet1.json [deleted file]
packetcable-client/openflowmininet1.xml [deleted file]
packetcable-client/openflowpica1.json [deleted file]
packetcable-client/openflowpica1.xml [deleted file]
packetcable-client/packetcable.postman_collection.txt [deleted file]
packetcable-client/restconftest.py [deleted file]
packetcable-client/xml2json [deleted file]
packetcable-config/pom.xml [deleted file]
packetcable-config/src/main/resources/80-packetcable.xml [deleted file]
packetcable-consumer/pom.xml [deleted file]
packetcable-consumer/src/main/java/org/opendaylight/controller/config/yang/config/pcmm_service/impl/PcmmServiceModule.java [deleted file]
packetcable-consumer/src/main/java/org/opendaylight/controller/config/yang/config/pcmm_service/impl/PcmmServiceModuleFactory.java [deleted file]
packetcable-consumer/src/main/java/org/opendaylight/controller/org/pcmm/api/PcmmService.java [deleted file]
packetcable-consumer/src/main/yang/pcmm-service-impl.yang [deleted file]
packetcable-karaf/pom.xml [deleted file]
packetcable-model/pom.xml [deleted file]
packetcable-model/src/main/yang/packetcable-broker.yang [deleted file]
packetcable-model/src/main/yang/packetcable-cmts.yang [deleted file]
packetcable-model/src/main/yang/packetcable-match-types.yang [deleted file]
packetcable-model/src/main/yang/packetcable-traffic-profile.yang [deleted file]
packetcable-provider/pom.xml [deleted file]
packetcable-provider/src/main/java/org/opendaylight/controller/packetcable/provider/OpenDaylightPacketCableProviderService.java [deleted file]
packetcable-provider/src/main/java/org/opendaylight/controller/packetcable/provider/OpendaylightPacketcableProvider.java [deleted file]
packetcable-provider/src/main/java/org/opendaylight/controller/packetcable/provider/processors/PCMMDataProcessor.java [deleted file]
packetcable-provider/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/packetcable/packetcable/provider/impl/rev140131/PacketcableProviderModule.java [deleted file]
packetcable-provider/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/packetcable/packetcable/provider/impl/rev140131/PacketcableProviderModuleFactory.java [deleted file]
packetcable-provider/src/main/yang/packetcable-provider-impl.yang [deleted file]
packetcable-provider/src/main/yang/packetcable-provider.yang [deleted file]
packetcable-provider/src/test/java/org/opendaylight/controller/packetcable/providerTest/OpendaylightPacketcableProviderTest.java [deleted file]
packetcable-provider/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/packetcable/packetcable/provider/PacketcableProviderModuleTest.java [deleted file]
pom.xml

diff --git a/features-packetcable/pom.xml b/features-packetcable/pom.xml
deleted file mode 100644 (file)
index a15002f..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- This program and the accompanying materials are made available under the
- terms of the Eclipse Public License v1.0 which accompanies this distribution,
- and is available at http://www.eclipse.org/legal/epl-v10.html
---><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>
-    <artifactId>packetcable</artifactId>
-    <groupId>org.opendaylight.packetcable</groupId>
-    <version>1.3.0-SNAPSHOT</version>
-  </parent>
-   <!--
-    Necessary TODO: Hookup your parent pom here, else you will not get necessary versions,
-    maven repos etc.  If you run this archetype in a subdirectory of your project, it
-    will pick the pom.xml from the parent directory as the parent pom, which may or may
-    not be correct.
-  -->
-   <artifactId>features-packetcable</artifactId>
-   <groupId>org.opendaylight.packetcable</groupId>
-   <!-- Optional Uncomment version if you are not using a parent pom.xml
-   <version>1.3.0-SNAPSHOT</version>
-   -->
-   <packaging>jar</packaging>
-   <properties>
-      <features.file>features.xml</features.file>
-      <!-- Optional: Move these properties to your parent pom and possibly
-            DependencyManagement section of your parent pom -->
-      <branding.version>1.2.0-SNAPSHOT</branding.version>
-      <karaf.resources.version>1.6.0-SNAPSHOT</karaf.resources.version>
-      <karaf.empty.version>1.6.0-SNAPSHOT</karaf.empty.version>
-      <surefire.version>2.16</surefire.version>
-   </properties>
-   <dependencies>
-    <!--
-      Necessary: Put dependencies on any feature repos
-      you use in your features.xml file.
-
-      Note: they will need to be <type>xml</xml>
-      and <classifier>features</classifier>.
-      One other thing to watch for is to make sure they are
-      <scope>compile</compile>, which they should be by default,
-      but be cautious lest they be at a different scope in a parent pom.
-
-      Examples:
-    -->
-        <dependency>
-          <groupId>org.opendaylight.yangtools</groupId>
-          <artifactId>features-yangtools</artifactId>
-          <version>0.8.0-SNAPSHOT</version>
-          <classifier>features</classifier>
-          <type>xml</type>
-        </dependency>
-        <dependency>
-          <groupId>org.opendaylight.controller</groupId>
-          <artifactId>features-mdsal</artifactId>
-          <version>1.3.0-SNAPSHOT</version>
-          <classifier>features</classifier>
-          <type>xml</type>
-        </dependency>
-        <dependency>
-          <groupId>org.opendaylight.packetcable</groupId>
-          <artifactId>packetcable-config</artifactId>
-          <version>${project.version}</version>
-          <classifier>config</classifier>
-          <type>xml</type>
-        </dependency>
-        <dependency>
-          <groupId>org.opendaylight.openflowplugin</groupId>
-          <artifactId>features-openflowplugin</artifactId>
-          <version>${openflowplugin.version}</version>
-          <classifier>features</classifier>
-          <type>xml</type>
-        </dependency>
-
-
-
-
-    <!--
-      Necessary TODO: Put dependencies for bundles directly referenced
-      in your features.xml file.  For every <bundle> reference in your
-      features.xml file, you need a corresponding dependency here.
-
-      Examples:
-    -->
-      <dependency>
-        <groupId>org.opendaylight.packetcable</groupId>
-        <artifactId>packetcable-consumer</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.opendaylight.packetcable</groupId>
-        <artifactId>packetcable-provider</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.opendaylight.packetcable</groupId>
-        <artifactId>packetcable-model</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.opendaylight.packetcable</groupId>
-        <artifactId>packetcable-driver</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-    <!--
-      Put dependencies for configfiles directly referenced
-      in your features.xml file.  For every <configfile> reference in your
-      features.xml file, you need a corresponding dependency here.
-
-      Example (presuming here version is coming from the parent pom):
-      <dependency>
-        <groupId>org.opendaylight.packetcable</groupId>
-        <artifactId>packetcable-config</artifactId>
-        <version>${project.version}</version>
-        <type>xml</type>
-        <classifier>config</classifier>
-      </dependency>
-    -->
-
-    <!--
-      Optional TODO: Remove TODO comments.
-    -->
-    <!-- test to validate features.xml -->
-    <dependency>
-      <groupId>org.opendaylight.odlparent</groupId>
-      <artifactId>features-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <!-- dependency for opendaylight-karaf-empty for use by testing -->
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>opendaylight-karaf-empty</artifactId>
-      <version>${karaf.empty.version}</version>
-      <type>zip</type>
-    </dependency>
-    <!-- Uncomment this if you get an error : java.lang.NoSuchMethodError: org.slf4j.helpers.MessageFormatter.format(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple;
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-simple</artifactId>
-      <version>1.7.2</version>
-    </dependency>
-    -->
-
-   </dependencies>
-   <build>
-      <resources>
-         <resource>
-            <directory>src/main/resources</directory>
-            <filtering>true</filtering>
-         </resource>
-      </resources>
-      <plugins>
-         <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-resources-plugin</artifactId>
-            <executions>
-               <execution>
-                  <id>filter</id>
-                  <phase>generate-resources</phase>
-                  <goals>
-                     <goal>resources</goal>
-                  </goals>
-               </execution>
-            </executions>
-         </plugin>
-         <plugin>
-            <groupId>org.codehaus.mojo</groupId>
-            <artifactId>build-helper-maven-plugin</artifactId>
-            <executions>
-               <execution>
-                  <id>attach-artifacts</id>
-                  <phase>package</phase>
-                  <goals>
-                     <goal>attach-artifact</goal>
-                  </goals>
-                  <configuration>
-                     <artifacts>
-                        <artifact>
-                           <file>${project.build.directory}/classes/${features.file}</file>
-                           <type>xml</type>
-                           <classifier>features</classifier>
-                        </artifact>
-                     </artifacts>
-                  </configuration>
-               </execution>
-            </executions>
-         </plugin>
-         <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <version>${surefire.version}</version>
-            <configuration>
-              <systemPropertyVariables>
-                <karaf.distro.groupId>org.opendaylight.controller</karaf.distro.groupId>
-                <karaf.distro.artifactId>opendaylight-karaf-empty</karaf.distro.artifactId>
-                <karaf.distro.version>${karaf.empty.version}</karaf.distro.version>
-              </systemPropertyVariables>
-              <dependenciesToScan>
-               <dependency>org.opendaylight.odlparent:features-test</dependency>
-              </dependenciesToScan>
-            </configuration>
-          </plugin>
-      </plugins>
-   </build>
-   <scm>
-      <connection>scm:git:ssh://git.opendaylight.org:29418/packetcable.git</connection>
-      <developerConnection>scm:git:ssh://git.opendaylight.org:29418/packetcable.git</developerConnection>
-      <tag>HEAD</tag>
-      <url>https://git.opendaylight.org/gerrit/gitweb?p=packetcable.git;a=summary</url>
-   </scm>
-</project>
diff --git a/features-packetcable/src/main/resources/features.xml b/features-packetcable/src/main/resources/features.xml
deleted file mode 100644 (file)
index fdcfef9..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
- This program and the accompanying materials are made available under the
- terms of the Eclipse Public License v1.0 which accompanies this distribution,
- and is available at http://www.eclipse.org/legal/epl-v10.html
--->
-<features name="odl-packetcable-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
-    <!--
-        Please read the features guidelines:
-        https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines#Feature_Best_Practices
-    -->
-    <!--
-    Add repo entries for the repositories of features you refer to in this feature file but do not define here.
-    <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/0.2.0-SNAPSHOT/xml/features</repository>
-    <repository>mvn:org.opendaylight.controller/features-adsal/${feature.adsal.version}/xml/features</repository>      
-    <repository>mvn:org.opendaylight.controller/features-adsal-compatibility/1.6.0-SNAPSHOT/xml/features</repository>
-    -->
-    <repository>mvn:org.opendaylight.yangtools/features-yangtools/0.8.0-SNAPSHOT/xml/features</repository>
-    <repository>mvn:org.opendaylight.controller/features-mdsal/1.3.0-SNAPSHOT/xml/features</repository>
-    <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/${openflowplugin.version}/xml/features</repository>
-
-    <feature name='odl-packetcable-all' version='${project.version}' description='OpenDaylight :: packetcable :: All'>
-            <feature version='${project.version}'>odl-packetcable-provider</feature>
-            <feature version='${project.version}'>odl-packetcable-model</feature>
-            <feature version='${project.version}'>odl-packetcable-consumer</feature>
-            <feature version='${project.version}'>odl-packetcable-driver</feature>
-    </feature>
-
-    <!--
-        Define your features.  It is useful to list then in order of dependency.  So if A depends on B, list A first.
-        It's also nice to list inside a feature, first the features it needs, then the bundles it needs, then the configfiles.
-            <feature version='0.2.0-SNAPSHOT'>odl-openflowplugin-flow-services</feature>
-           <bundle>mvn:com.google.common.collect/collect/14.0</bundle>
-
-    -->
-        <!--- * Basic MD-SAL Consumer -->
-        <feature name='odl-packetcable-consumer' version='${project.version}' description='OpenDaylight :: packetcable :: Consumer '>
-            <feature version='1.3.0-SNAPSHOT'>odl-mdsal-broker</feature>
-            <feature version='${project.version}'>odl-packetcable-model</feature>
-            <feature version='${project.version}'>odl-packetcable-driver</feature>
-            <bundle>mvn:org.opendaylight.packetcable/packetcable-driver/${project.version}</bundle>
-            <bundle>mvn:org.opendaylight.packetcable/packetcable-consumer/${project.version}</bundle>
-            <configfile finalname="etc/opendaylight/karaf/80-packetcable.xml">mvn:org.opendaylight.packetcable/packetcable-config/${project.version}/xml/config</configfile>
-        </feature>
-    
-        <!--- * Basic MD-SAL Model feature -->
-        <feature name='odl-packetcable-model' version='${project.version}' description='OpenDaylight :: packetcable :: Model'>
-            <feature version='0.8.0-SNAPSHOT'>odl-yangtools-binding</feature>
-            <feature version='0.8.0-SNAPSHOT'>odl-yangtools-models</feature>
-               <feature version='${openflowplugin.version}'>odl-openflowplugin-nsf-model</feature>
-            <bundle>mvn:org.opendaylight.packetcable/packetcable-model/${project.version}</bundle>
-        </feature>
-
-        <!--- * Basic MD-SAL Provider -->
-        <feature name='odl-packetcable-provider' version='${project.version}' description='OpenDaylight :: packetcable :: Provider'>
-            <feature version='1.3.0-SNAPSHOT'>odl-mdsal-broker</feature>
-            <bundle>mvn:org.opendaylight.packetcable/packetcable-provider/${project.version}</bundle>
-            <bundle>mvn:org.opendaylight.packetcable/packetcable-driver/${project.version}</bundle>
-               <feature version='${openflowplugin.version}'>odl-openflowplugin-nsf-model</feature>
-            <feature version='${project.version}'>odl-packetcable-model</feature>
-            <feature version='${project.version}'>odl-packetcable-driver</feature>
-            <configfile finalname="etc/opendaylight/karaf/80-packetcable.xml">mvn:org.opendaylight.packetcable/packetcable-config/${project.version}/xml/config</configfile>
-        </feature>
-
-        <!--- * * -->
-        <feature name='odl-packetcable-driver' version='${project.version}' description='OpenDaylight :: packetcable :: Driver'>
-            <feature version='1.3.0-SNAPSHOT'>odl-mdsal-broker</feature>
-       </feature>
-
-</features>
diff --git a/packetcable-client/a_cmts1.json b/packetcable-client/a_cmts1.json
deleted file mode 100644 (file)
index d0ff385..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-
-        "cmts-node": {
-            "address": "10.200.90.3",
-            "port": "3918"
-        }
-}
diff --git a/packetcable-client/a_cmts1.xml b/packetcable-client/a_cmts1.xml
deleted file mode 100644 (file)
index 12359eb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<node><cmts><port>3918</port><ip-address>10.200.90.3</ip-address></cmts></node>
\ No newline at end of file
diff --git a/packetcable-client/a_cmts2.json b/packetcable-client/a_cmts2.json
deleted file mode 100644 (file)
index 4484a04..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "packetcable-cmts:cmts-node": {
-            "ip-address": "127.0.0.1",
-            "port": "3918"
-        }
-}
-
diff --git a/packetcable-client/a_cmts2.xml b/packetcable-client/a_cmts2.xml
deleted file mode 100644 (file)
index 12359eb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<node><cmts><port>3918</port><ip-address>10.200.90.3</ip-address></cmts></node>
\ No newline at end of file
diff --git a/packetcable-client/a_cmts3.json b/packetcable-client/a_cmts3.json
deleted file mode 100644 (file)
index dcec4ac..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "packetcable-cmts:cmts-node": {
-        "port": 3918,
-        "address": "10.200.90.3"
-    }
-}
-
diff --git a/packetcable-client/base.text b/packetcable-client/base.text
deleted file mode 100644 (file)
index 91c5420..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-# Something from the real world
-
-# 0. Create a new cmts for adding cableflows
-# Operation: POST
-# URI: http://192.168.11.1:8181/restconf/config/opendaylight-inventory:nodes/node/cmts:1
-# /restconf/config/opendaylight-inventory:nodes/node/cmts:1
-
-cmts1 = {
-    "cmts": {
-        "name": "SunnyvaleCMTS",
-        "id": "2",
-        "enable": "true",
-       "ipaddress": "10.200.90.3",
-       "port": 3918,
-    }
-}
-
-# 1. Create a new flow on the switch cableflow:1 (in table 1)
-# Operation: POST
-# URI: http://192.168.11.1:8181/restconf/config/opendaylight-inventory:nodes/node/cableflow:1
-# /restconf/config/opendaylight-inventory:nodes/node/cableflow:1
-
-
-cableflow1 = {
-    "flow": {
-        "barrier": "false",
-        "flow-name": "FooXCableFlow1",
-        "id": "111",
-        "installHw": "false",
-        "instructions": {
-            "instruction": {
-                "apply-actions": {
-                    "action": {
-                        "drop-action": null,
-                        "order": "0"
-                    }
-                   "action": {
-                       traffic-profile": "best-effort",
-                        "order": "0"
-                   }
-                },
-                "order": "1"
-            }
-        },
-        "match": {
-            "ethernet-match": {
-                "ethernet-type": {
-                    "type": "2048"
-                }
-            },
-            "ipv4-destination": "10.0.0.1/24"
-        },
-        "priority": "2",
-    }
-}
-
-
-# 2. Change strict to true in previous flow
-# Operation: PUT
-# URI: http://192.168.11.1:8080/restconf/config/opendaylight-inventory:nodes/node/cableflow:1/table/1/flow/111
-# /restconf/config/opendaylight-inventory:nodes/node/cableflow:1/table/1/flow/111
-
-cableflow2 = {
-    "flow": {
-        "barrier": "false",
-        "flow-name": "FooXCableFlow2",
-        "id": "111",
-        "installHw": "false",
-        "instructions": {
-            "instruction": {
-                "apply-actions": {
-                   "action": {
-                       traffic-profile": "best-effort",
-                        "order": "0"
-                   }
-                },
-                "order": "0"
-            }
-        },
-        "match": {
-            "ethernet-match": {
-                "ethernet-type": {
-                    "type": "2048"
-                }
-            },
-            "ipv4-destination": "10.0.0.1/24"
-        },
-        "priority": "2",
-    }
-}
-
-# 3. Show flow - check that strict is true
-# Operation: GET
-# URI: http://192.168.11.1:8080/restconf/config/opendaylight-inventory:nodes/node/cableflow:1/table/1/flow/111
-# /restconf/config/opendaylight-inventory:nodes/node/cableflow:1/table/1/flow/111
-
-#4. Delete created flow
-# Operation: DELETE
-# URI: http://192.168.11.1:8080/restconf/config/opendaylight-inventory:nodes/node/cableflow:1/table/1/flow/111
-# /restconf/config/opendaylight-inventory:nodes/node/cableflow:1/table/1/flow/111
-
diff --git a/packetcable-client/cableflow1.json b/packetcable-client/cableflow1.json
deleted file mode 100644 (file)
index 81b28f7..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-    "flow": {
-        "barrier": "false",
-        "cookie": "10",
-        "cookie_mask": "10",
-        "flow-name": "FooXf1",
-        "hard-timeout": "0",
-        "id": "1",
-        "idle-timeout": "0",
-        "installHw": "false",
-        "instructions": {
-            "instruction": {
-                "apply-actions": {
-                    "action": {
-                        "drop-action": null,
-                        "order": "1"
-                    },
-                    "action": {
-                        "traffic-profile": "upstream_drop",
-                        "order": "0"
-                    }
-                },
-                "order": "0"
-            }
-        },
-        "match": {
-            "ethernet-match": {
-                "ethernet-type": {
-                    "type": "2048"
-                }
-            },
-            "ipv4-destination": "10.0.0.1/24"
-        },
-        "priority": "2",
-        "strict": "false",
-        "table_id": "0"
-    }
-}
diff --git a/packetcable-client/cableflow1.xml b/packetcable-client/cableflow1.xml
deleted file mode 100644 (file)
index a9d445d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow 
-    xmlns="urn:opendaylight:flow:inventory">
-    <strict>false</strict>
-    <instructions>
-        <instruction>
-               <order>1</order>
-            <apply-actions>
-                <action>
-                  <order>1</order>
-                    <flood-all-action/>
-                </action>
-            </apply-actions>
-        </instruction>
-    </instructions>
-    <table_id>2</table_id>
-    <id>111</id>
-    <cookie_mask>10</cookie_mask>
-    <out_port>10</out_port>
-    <installHw>false</installHw>
-    <out_group>2</out_group>
-    <match>
-        <ethernet-match>
-            <ethernet-type>
-                <type>2048</type>
-            </ethernet-type>
-        </ethernet-match>
-        <ipv4-destination>10.0.0.1/24</ipv4-destination>
-    </match>
-    <hard-timeout>0</hard-timeout>
-    <cookie>10</cookie>
-    <idle-timeout>0</idle-timeout>
-    <flow-name>FooXf22</flow-name>
-    <priority>2</priority>
-    <barrier>false</barrier>
-</flow>
diff --git a/packetcable-client/cableflow2.json b/packetcable-client/cableflow2.json
deleted file mode 100644 (file)
index b4f2143..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-    "flow": {
-        "barrier": "false",
-        "cookie": "10",
-        "cookie_mask": "10",
-        "flow-name": "FooXf2",
-        "idle-timeout": "0",
-        "hard-timeout": "0",
-        "id": "2",
-        "installHw": "true",
-        "instructions": {
-            "instruction": {
-                "apply-actions": {
-                    "action": {
-                        "traffic-profile":"flowspec",
-                        "order": "1"
-                    }
-                },
-                "order": "1"
-            }
-        },
-        "match": {
-            "ethernet-match": {
-                "ethernet-type": {
-                    "type": "2048"
-                }
-            },
-            "ipv4-destination": "10.0.0.1/24"
-        },
-        "priority": "2",
-        "strict": "true",
-        "table_id": "0"
-    }
-}
diff --git a/packetcable-client/cableflow2.xml b/packetcable-client/cableflow2.xml
deleted file mode 100644 (file)
index 3feb128..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow 
-    xmlns="urn:opendaylight:flow:inventory">
-    <strict>true</strict>
-    <instructions>
-        <instruction>
-               <order>1</order>
-            <apply-actions>
-                <action>
-                  <order>1</order>
-                    <flood-all-action/>
-                </action>
-            </apply-actions>
-        </instruction>
-    </instructions>
-    <table_id>2</table_id>
-    <id>111</id>
-    <cookie_mask>10</cookie_mask>
-    <out_port>10</out_port>
-    <installHw>false</installHw>
-    <out_group>2</out_group>
-    <match>
-        <ethernet-match>
-            <ethernet-type>
-                <type>2048</type>
-            </ethernet-type>
-        </ethernet-match>
-        <ipv4-destination>10.0.0.1/24</ipv4-destination>
-    </match>
-    <hard-timeout>0</hard-timeout>
-    <cookie>10</cookie>
-    <idle-timeout>0</idle-timeout>
-    <flow-name>FooXf22</flow-name>
-    <priority>2</priority>
-    <barrier>false</barrier>
-</flow>
diff --git a/packetcable-client/cableflow3.json b/packetcable-client/cableflow3.json
deleted file mode 100644 (file)
index e35b4ec..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-    "flow": {
-        "barrier": "false",
-        "cookie": "10",
-        "cookie_mask": "10",
-        "flow-name": "FooXf3",
-        "hard-timeout": "0",
-        "id": "3",
-        "idle-timeout": "0",
-        "installHw": "true",
-        "instructions": {
-            "instruction": {
-                "apply-actions": {
-                    "action": {
-                        "traffic-profile": "docsis-service-class-name",
-                        "order": "1"
-                    }
-                },
-                "order": "1"
-            }
-        },
-        "match": {
-            "ethernet-match": {
-                "ethernet-type": {
-                    "type": "2048"
-                }
-            },
-            "ipv4-source": "10.0.0.1/24",
-            "tcp-source-port": "8080",
-            "ipv4-destination": "10.0.0.2/24",
-            "tcp-destination-port-start": "80",
-            "tcp-destination-port-end": "90"
-        },
-        "priority": "2",
-        "strict": "true",
-        "table_id": "0"
-    }
-}
diff --git a/packetcable-client/cableflow3.xml b/packetcable-client/cableflow3.xml
deleted file mode 100644 (file)
index 7032a91..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow 
-    xmlns="urn:opendaylight:flow:inventory">
-    <strict>true</strict>
-    <instructions>
-        <instruction>
-               <order>1</order>
-            <apply-actions>
-                <action>
-                  <order>1</order>
-                    <flood-all-action/>
-                </action>
-            </apply-actions>
-        </instruction>
-    </instructions>
-    <table_id>2</table_id>
-    <id>111</id>
-    <cookie_mask>10</cookie_mask>
-    <out_port>10</out_port>
-    <installHw>false</installHw>
-    <out_group>2</out_group>
-    <match>
-        <ethernet-match>
-            <ethernet-type>
-                <type>2048</type>
-            </ethernet-type>
-        </ethernet-match>
-        <ipv4-destination>10.0.0.1/24</ipv4-destination>
-    </match>
-    <hard-timeout>0</hard-timeout>
-    <cookie>10</cookie>
-    <idle-timeout>0</idle-timeout>
-    <flow-name>FooXf22</flow-name>
-    <priority>2</priority>
-    <barrier>false</barrier>
-</flow>
-
diff --git a/packetcable-client/cableflow4.json b/packetcable-client/cableflow4.json
deleted file mode 100644 (file)
index f4fcb7b..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-    "flow": {
-        "barrier": "false",
-        "cookie": "10",
-        "cookie_mask": "255",
-        "flow-name": "FooXf4",
-        "hard-timeout": "1200",
-        "id": "4",
-        "idle-timeout": "3400",
-        "instructions": {
-            "instruction": {
-                "apply-actions": {
-                    "action": {
-                        "traffic-profile": "best-effort",
-                        "order": "0"
-                    }
-                },
-                "order": "0"
-            }
-        },
-        "match": {
-            "ethernet-match": {
-                "ethernet-destination": {
-                    "address": "ff:ff:29:01:19:61"
-                },
-                "ethernet-source": {
-                    "address": "00:00:00:11:23:ae"
-                },
-                "ethernet-type": {
-                    "type": "2048"
-                }
-            },
-            "in-port": "0",
-            "ip-match": {
-                "ip-dscp": "0",
-                "ip-ecn": "0",
-                "ip-protocol": "132"
-            },
-            "ipv4-destination": "172.168.5.6/16",
-            "ipv4-source": "17.1.2.3/8",
-            "udp-destination-port": "384",
-            "udp-source-port-start": "768",
-            "udp-source-port-end": "768"
-        },
-        "priority": "2",
-        "strict": "false",
-        "table_id": "0"
-    }
-}
diff --git a/packetcable-client/cableflow4.xml b/packetcable-client/cableflow4.xml
deleted file mode 100644 (file)
index 2587391..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow xmlns="urn:opendaylight:flow:inventory">
-    <strict>false</strict>
-    <instructions>
-        <instruction>
-            <order>0</order>
-            <apply-actions>
-                <action>
-                    <order>0</order>
-                    <dec-mpls-ttl/>
-                </action>
-            </apply-actions>
-        </instruction>
-    </instructions>
-    <table_id>2</table_id>
-    <id>133</id>
-    <cookie_mask>255</cookie_mask>
-    <match>
-        <ethernet-match>
-            <ethernet-type>
-                <type>2048</type>
-            </ethernet-type>
-            <ethernet-destination>
-                <address>ff:ff:29:01:19:61</address>
-            </ethernet-destination>
-            <ethernet-source>
-                <address>00:00:00:11:23:ae</address>
-            </ethernet-source>
-        </ethernet-match>
-        <ipv4-source>17.1.2.3/8</ipv4-source>
-        <ipv4-destination>172.168.5.6/16</ipv4-destination>
-        <ip-match>
-            <ip-protocol>132</ip-protocol>
-            <ip-dscp>0</ip-dscp>
-            <ip-ecn>0</ip-ecn>
-        </ip-match>
-        <sctp-source-port>768</sctp-source-port>
-        <sctp-destination-port>384</sctp-destination-port>
-        <in-port>0</in-port>
-    </match>
-    <hard-timeout>1200</hard-timeout>
-    <flags>FlowModFlags [_cHECKOVERLAP=false, _rESETCOUNTS=false, _nOPKTCOUNTS=false, _nOBYTCOUNTS=false, _sENDFLOWREM=false]</flags>
-    <cookie>10</cookie>
-    <idle-timeout>3400</idle-timeout>
-    <flow-name>FooXf10</flow-name>
-    <priority>2</priority>
-    <barrier>false</barrier>
-</flow>
diff --git a/packetcable-client/cableflow5.json b/packetcable-client/cableflow5.json
deleted file mode 100644 (file)
index f3f9c6a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-    "flow": {
-        "barrier": "false",
-        "cookie": "5",
-        "cookie_mask": "255",
-        "flow-name": "FooXf5",
-        "hard-timeout": "12",
-        "id": "5",
-        "idle-timeout": "34",
-        "instructions": {
-            "instruction": {
-                "apply-actions": {
-                    "action": {
-                        "traffic-profile": "best-effort",
-                        "order": "0"
-                    }
-                },
-                "order": "0"
-            }
-        },
-        "match": {
-            "ethernet-match": {
-                "ethernet-type": {
-                    "type": "2048"
-                }
-            },
-            "in-port": "0",
-            "ipv4-destination": "10.0.0.1/16",
-            "ipv4-source": "10.0.0.3/24"
-        },
-        "priority": "2",
-        "strict": "false",
-        "table_id": "0"
-    }
-}
diff --git a/packetcable-client/cableflow5.xml b/packetcable-client/cableflow5.xml
deleted file mode 100644 (file)
index 9b1a870..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow xmlns="urn:opendaylight:flow:inventory">
-    <strict>false</strict>
-    <instructions>
-        <instruction>
-            <order>0</order>
-            <apply-actions>
-                <action>
-                    <order>0</order>
-                    <dec-mpls-ttl/>
-                </action>
-            </apply-actions>
-        </instruction>
-    </instructions>
-    <table_id>2</table_id>
-    <id>128</id>
-    <cookie_mask>255</cookie_mask>
-    <match>
-        <ethernet-match>
-            <ethernet-type>
-                <type>2048</type>
-            </ethernet-type>
-            <ethernet-destination>
-                <address>ff:ff:ff:ff:ff:ff</address>
-            </ethernet-destination>
-            <ethernet-source>
-                <address>00:00:00:00:23:ae</address>
-            </ethernet-source>
-        </ethernet-match>
-        <ipv4-source>10.1.2.3/24</ipv4-source>
-        <ipv4-destination>20.4.5.6/16</ipv4-destination>
-        <in-port>0</in-port>
-    </match>
-    <hard-timeout>12</hard-timeout>
-    <flags>FlowModFlags [_cHECKOVERLAP=false, _rESETCOUNTS=false, _nOPKTCOUNTS=false, _nOBYTCOUNTS=false, _sENDFLOWREM=false]</flags>
-    <cookie>5</cookie>
-    <idle-timeout>34</idle-timeout>
-    <flow-name>FooXf5</flow-name>
-    <priority>2</priority>
-    <barrier>false</barrier>
-</flow>
diff --git a/packetcable-client/cableflow7.json b/packetcable-client/cableflow7.json
deleted file mode 100644 (file)
index 82183e9..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-    "flow": {
-        "cookie": "101",
-        "cookie_mask": "255",
-        "flow-name": "FooXf7",
-        "hard-timeout": "1200",
-        "id": "256",
-        "idle-timeout": "3400",
-        "installHw": "false",
-        "instructions": {
-            "instruction": {
-                "apply-actions": {
-                    "action": {
-                        "order": "0",
-                        "traffic-profile": "best-effort"
-                    }
-                },
-                "order": "0"
-            }
-        },
-        "match": {
-            "ethernet-match": {
-                "ethernet-type": {
-                    "type": "34525"
-                }
-            },
-            "ip-match": {
-                "ip-dscp": "60",
-                "ip-ecn": "3",
-                "ip-protocol": "6"
-            },
-            "ipv6-destination": "fe80:2acf:e9ff:fe21::6431/94",
-            "ipv6-source": "1234:5678:9ABC:DEF0:FDCD:A987:6543:210F/76",
-            "tcp-destination-port": "8080",
-            "tcp-source-port": "183"
-        },
-        "priority": "2",
-        "strict": "false",
-        "table_id": "2"
-    }
-}
diff --git a/packetcable-client/cableflow7.xml b/packetcable-client/cableflow7.xml
deleted file mode 100644 (file)
index da1e277..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow xmlns="urn:opendaylight:flow:inventory">
-    <strict>false</strict>
-    <flow-name>set-field-ipv6-source-addr</flow-name>
-    <id>256</id>
-    <cookie_mask>255</cookie_mask>
-    <cookie>101</cookie>
-    <table_id>2</table_id>
-    <priority>2</priority>
-    <hard-timeout>1200</hard-timeout>
-    <idle-timeout>3400</idle-timeout>
-    <installHw>false</installHw>
-    <instructions>
-        <instruction>
-            <order>0</order>
-            <apply-actions>
-                <action>
-                    <order>0</order>
-                    <set-field>
-                        <ipv6-source>1004:5608:900c:d000:f00d::200f</ipv6-source>
-                    </set-field>
-                </action>
-            </apply-actions>
-        </instruction>
-    </instructions>
-    <match>
-        <ethernet-match>
-            <ethernet-type>
-                <type>34525</type>
-            </ethernet-type>
-        </ethernet-match>
-        <ipv6-source>1234:5678:9ABC:DEF0:FDCD:A987:6543:210F/76</ipv6-source>
-        <ipv6-destination>fe80:2acf:e9ff:fe21::6431/94</ipv6-destination>
-        <metadata>
-            <metadata>12345</metadata>
-        </metadata>
-        <ip-match>
-            <ip-protocol>6</ip-protocol>
-            <ip-dscp>60</ip-dscp>
-            <ip-ecn>3</ip-ecn>
-        </ip-match>
-        <tcp-source-port>183</tcp-source-port>
-        <tcp-destination-port>8080</tcp-destination-port>
-    </match>
-</flow>
-
diff --git a/packetcable-client/cableflow8.json b/packetcable-client/cableflow8.json
deleted file mode 100644 (file)
index 334a833..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-    "flow": {
-        "cookie": "101",
-        "cookie_mask": "255",
-        "flow-name": "FooXf8",
-        "hard-timeout": "1200",
-        "id": "8",
-        "idle-timeout": "3400",
-        "installHw": "false",
-        "instructions": {
-            "instruction": {
-                "apply-actions": {
-                    "action": {
-                        "order": "0",
-                        "traffic-profile": "unsolicited-grant-service"
-                    }
-                },
-                "order": "0"
-            }
-        },
-        "match": {
-            "ethernet-match": {
-                "ethernet-type": {
-                    "type": "34525"
-                }
-            },
-            "ip-match": {
-                "ip-dscp": "60",
-                "ip-ecn": "3",
-                "ip-protocol": "6"
-            },
-            "ipv6-destination": "fe80:2acf:e9ff:fe21::6431/94",
-            "ipv6-source": "1234:5678:9ABC:DEF0:FDCD:A987:6543:210F/76",
-            "tcp-destination-port": "8080",
-            "tcp-source-port": "183"
-        },
-        "priority": "2",
-        "strict": "false",
-        "table_id": "0"
-    }
-}
diff --git a/packetcable-client/cableflow8.xml b/packetcable-client/cableflow8.xml
deleted file mode 100644 (file)
index c05acdc..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<flow xmlns="urn:opendaylight:flow:inventory">
-    <strict>false</strict>
-    <flow-name>set-field-ipv6-dest-addr</flow-name>
-    <id>256</id>
-    <cookie_mask>255</cookie_mask>
-    <cookie>101</cookie>
-    <table_id>2</table_id>
-    <priority>2</priority>
-    <hard-timeout>1200</hard-timeout>
-    <idle-timeout>3400</idle-timeout>
-    <installHw>false</installHw>
-    <instructions>
-        <instruction>
-            <order>0</order>
-            <apply-actions>
-                <action>
-                    <order>0</order>
-                    <set-field>
-                        <ipv6-destination>2160:2160:216::6431</ipv6-destination>
-                    </set-field>
-                </action>
-            </apply-actions>
-        </instruction>
-    </instructions>
-    <match>
-        <ethernet-match>
-            <ethernet-type>
-                <type>34525</type>
-            </ethernet-type>
-        </ethernet-match>
-        <ipv6-source>1234:5678:9ABC:DEF0:FDCD:A987:6543:210F/76</ipv6-source>
-        <ipv6-destination>fe80:2acf:e9ff:fe21::6431/94</ipv6-destination>
-        <metadata>
-            <metadata>12345</metadata>
-        </metadata>
-        <ip-match>
-            <ip-protocol>6</ip-protocol>
-            <ip-dscp>60</ip-dscp>
-            <ip-ecn>3</ip-ecn>
-        </ip-match>
-        <tcp-source-port>183</tcp-source-port>
-        <tcp-destination-port>8080</tcp-destination-port>
-    </match>
-</flow>
-
diff --git a/packetcable-client/flow_config_perf_pcmm.py b/packetcable-client/flow_config_perf_pcmm.py
deleted file mode 100644 (file)
index 28edfad..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-__author__ = "Jan Medved"
-__copyright__ = "Copyright(c) 2014, Cisco Systems, Inc."
-__license__ = "New-style BSD"
-__email__ = "jmedved@cisco.com"
-
-from random import randrange
-import json
-import argparse
-import requests
-import time
-import threading
-import re
-
-class Counter(object):
-    def __init__(self, start=0):
-        self.lock = threading.Lock()
-        self.value = start
-    def increment(self, value=1):
-        self.lock.acquire()
-        try:
-            self.value = self.value + value
-        finally:
-            self.lock.release()
-
-
-class Timer(object):
-    def __init__(self, verbose=False):
-        self.verbose = verbose
-
-    def __enter__(self):
-        self.start = time.time()
-        return self
-
-    def __exit__(self, *args):
-        self.end = time.time()
-        self.secs = self.end - self.start
-        self.msecs = self.secs * 1000  # millisecs
-        if self.verbose:
-            print ("elapsed time: %f ms" % self.msecs)
-
-
-putheaders = {'content-type': 'application/json'}
-getheaders = {'Accept': 'application/json'}
-# ODL IP:port
-# We fist delete all existing service functions
-DELURL  = "restconf/config/opendaylight-inventory:nodes/node/openflow:%d/table/0/flow/%d"
-GETURL  = "restconf/config/opendaylight-inventory:nodes/node/openflow:%d/table/0/flow/%d"
-# Incremental PUT. This URL is for a list element
-PUTURL  = "restconf/config/opendaylight-inventory:nodes/node/openflow:%d/table/0/flow/%d"
-
-INVURL = 'restconf/operational/opendaylight-inventory:nodes'
-N1T0_URL = 'restconf/operational/opendaylight-inventory:nodes/node/openflow:1/table/0'
-
-
-print_lock = threading.Lock()
-threads_done = 0
-
-JSON_FLOW_MOD1 = '''{
-    "flow-node-inventory:flow": [
-        {
-            "flow-node-inventory:cookie": %d,
-            "flow-node-inventory:cookie_mask": 65535,
-            "flow-node-inventory:flow-name": "%s",
-            "flow-node-inventory:hard-timeout": %d,
-            "flow-node-inventory:id": "%s",
-            "flow-node-inventory:idle-timeout": %d,
-            "flow-node-inventory:installHw": false,
-            "flow-node-inventory:instructions": {
-                "flow-node-inventory:instruction": [
-                    {
-                        "flow-node-inventory:apply-actions": {
-                            "flow-node-inventory:action": [
-                                {
-                                    "flow-node-inventory:dec-nw-ttl": {},
-                                    "flow-node-inventory:order": 0
-                                }
-                            ]
-                        },
-                        "flow-node-inventory:order": 0
-                    }
-                ]
-            },
-            "flow-node-inventory:match": {
-                "flow-node-inventory:metadata": {
-                    "flow-node-inventory:metadata": %d
-                }
-            },
-            "flow-node-inventory:priority": 2,
-            "flow-node-inventory:strict": false,
-            "flow-node-inventory:table_id": 0
-        }
-    ]
-}'''
-
-add_ok_rate = Counter(0.0)
-add_total_rate = Counter(0.0)
-del_ok_rate = Counter(0.0)
-del_total_rate = Counter(0.0)
-
-flows = {}
-
-def add_flow(session, url_template, res, tid, node, flow_id, metadata):
-    flow_data = JSON_FLOW_MOD1 % (tid + flow_id, 'TestFlow-%d' % flow_id, 65000,
-                                  str(flow_id), 65000, metadata)
-    flow_url = url_template % (node, flow_id)
-    r = session.put(flow_url, data=flow_data, headers=putheaders, stream=False )
-
-    try:
-        res[r.status_code] += 1
-    except(KeyError):
-        res[r.status_code] = 1
-
-
-def delete_flow(session, url_template, res, tid, node, flow_id):
-    flow_url = url_template % (node, flow_id)
-    r = session.delete(flow_url, headers=getheaders)
-    try:
-        res[r.status_code] += 1
-    except(KeyError):
-        res[r.status_code] = 1
-
-
-def get_num_nodes(session, inventory_url, default_nodes):
-    """
-    Determines the number of OF nodes in the connected mininet network. If
-    mininet is not connected, the default number of flows is 16
-    """
-    nodes = default_nodes
-    r = session.get(inventory_url, headers=getheaders, stream=False )
-    if (r.status_code == 200):
-        try:
-            inv = json.loads(r.content)['nodes']['node']
-            nn = 0
-            for n in range(len(inv)):
-                if re.search('openflow', inv[n]['id']) != None:
-                    nn = nn + 1
-            if nn != 0:
-                nodes = nn
-        except(KeyError):
-            pass
-
-    return nodes
-
-def add_flows(put_url, nnodes, nflows, start_flow, tid, cond):
-    """
-    The function that add flows into the ODL config space.
-    """
-    global threads_done
-
-    add_res = {}
-    add_res[200] = 0
-
-    s = requests.Session()
-
-    nnodes = get_num_nodes(s, inv_url, nnodes)
-
-    with print_lock:
-        print '    Thread %d:\n        Adding %d flows on %d nodes' % (tid, nflows, nnodes)
-
-    with Timer() as t:
-        for flow in range(nflows):
-            node_id = randrange(1, nnodes+1)
-            flow_id = tid*100000 + flow + start_flow
-            flows[tid][flow_id] = node_id
-            add_flow(s, put_url, add_res, tid, node_id, flow_id, flow*2+1)
-
-    add_time = t.secs
-    add_ok_rate_t = add_res[200]/add_time
-    add_total_rate_t = sum(add_res.values())/add_time
-
-    add_ok_rate.increment(add_ok_rate_t)
-    add_total_rate.increment(add_total_rate_t)
-
-    with print_lock:
-        print '    Thread %d: ' % tid
-        print '        Add time: %.2f,' % add_time
-        print '        Add success rate:  %.2f, Add total rate: %.2f' % \
-                        (add_ok_rate_t, add_total_rate_t)
-        print '        Add Results: ',
-        print add_res
-        threads_done = threads_done + 1
-
-    s.close()
-
-    with cond:
-        cond.notifyAll()
-
-
-def delete_flows(del_url, nnodes, nflows, start_flow, tid, cond):
-    """
-    The function that deletes flow from the ODL config space that have been
-    added using the 'add_flows()' function.
-    """
-    global threads_done
-
-    del_res = {}
-    del_res[200] = 0
-
-    s = requests.Session()
-    nnodes = get_num_nodes(s, inv_url, nnodes)
-
-    with print_lock:
-        print 'Thread %d: Deleting %d flows on %d nodes' % (tid, nflows, nnodes)
-
-    with Timer() as t:
-        for flow in range(nflows):
-            flow_id = tid*100000 + flow + start_flow
-            delete_flow(s, del_url, del_res, 100, flows[tid][flow_id], flow_id)
-
-    del_time = t.secs
-
-    del_ok_rate_t = del_res[200]/del_time
-    del_total_rate_t = sum(del_res.values())/del_time
-
-    del_ok_rate.increment(del_ok_rate_t)
-    del_total_rate.increment(del_total_rate_t)
-
-    with print_lock:
-        print '    Thread %d: ' % tid
-        print '        Delete time: %.2f,' % del_time
-        print '        Delete success rate:  %.2f, Delete total rate: %.2f' % \
-                        (del_ok_rate_t, del_total_rate_t)
-        print '        Delete Results: ',
-        print del_res
-        threads_done = threads_done + 1
-
-    s.close()
-
-    with cond:
-        cond.notifyAll()
-
-
-def driver(function, ncycles, nthreads, nnodes, nflows, url, cond, ok_rate, total_rate):
-    """
-    The top-level driver function that drives the execution of the flow-add and
-    flow-delete tests.
-    """
-    global threads_done
-
-    for c in range(ncycles):
-        with print_lock:
-            print '\nCycle %d:' % c
-
-        threads = []
-        for i in range(nthreads):
-            t = threading.Thread(target=function,
-                                 args=(url, nnodes, nflows, c*nflows, i, cond))
-            threads.append(t)
-            t.start()
-
-        # Wait for all threads to finish
-        while threads_done < in_args.nthreads:
-            with cond:
-                cond.wait()
-
-        with print_lock:
-             print '    Overall success rate:  %.2f, Overall rate: %.2f' % \
-                            (ok_rate.value, total_rate.value)
-             threads_done = 0
-
-        ok_rate.value = 0
-        total_rate.value = 0
-
-
-if __name__ == "__main__":
-    parser = argparse.ArgumentParser(description='Flow programming performance test: '
-                                     'First adds and then deletes flows into '
-                                     'the config tree, as specified by optional parameters.')
-    parser.add_argument('--odlhost', default='127.0.0.1', help='Host where '
-                        'odl controller is running (default is 127.0.0.1)')
-    parser.add_argument('--odlport', default='8080', help='Port on '
-                        'which odl\'s RESTCONF is listening (default is 8080)')
-    parser.add_argument('--nflows', type=int, default=10, help='Number of '
-                        'flow add/delete requests to send in  each cycle; default 10')
-    parser.add_argument('--ncycles', type=int, default=1, help='Number of '
-                        'flow add/delete cycles to send in each thread; default 1')
-    parser.add_argument('--nthreads', type=int, default=1,
-                        help='Number of request worker threads, default=1. '
-                        'Each thread will add/delete nflows.')
-    parser.add_argument('--nnodes', type=int, default=16,
-                        help='Number of nodes if mininet is not connected, default=16. '
-                        'If mininet is connected, flows will be evenly distributed '
-                        '(programmed) into connected nodes.')
-    parser.add_argument('--delete', dest='delete', action='store_true', default=True,
-                        help='Delete all added flows one by one, benchmark delete '
-                        'performance.')
-    parser.add_argument('--no-delete', dest='delete', action='store_false',
-                        help='Add flows and leave them in the config data store.')
-
-    in_args = parser.parse_args()
-
-    put_url = 'http://' + in_args.odlhost + ":" + in_args.odlport + '/' + PUTURL
-    del_url = 'http://' + in_args.odlhost + ":" + in_args.odlport + '/' + DELURL
-    get_url = 'http://' + in_args.odlhost + ":" + in_args.odlport + '/' + GETURL
-    inv_url = 'http://' + in_args.odlhost + ":" + in_args.odlport + '/' + INVURL
-
-    cond = threading.Condition()
-
-    # Initialize the flows array
-    for i in range(in_args.nthreads):
-        flows[i] = {}
-
-    # Run through ncycles, where nthreads are started in each cycles and
-    # nflows added from each thread
-    driver(add_flows, in_args.ncycles, in_args.nthreads, in_args.nnodes, \
-           in_args.nflows, put_url, cond, add_ok_rate, add_total_rate)
-
-
-    # Run through ncycles, where nthreads are started in each cycles and
-    # nflows added from each thread
-    if in_args.delete == True:
-        driver(delete_flows, in_args.ncycles, in_args.nthreads, in_args.nnodes, \
-               in_args.nflows, del_url, cond, del_ok_rate, del_total_rate)
diff --git a/packetcable-client/make_json.sh b/packetcable-client/make_json.sh
deleted file mode 100755 (executable)
index c818c33..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh 
-
-files=( *.xml )
-for file in "${files[@]}"
-do
-  filename="${file##*/}"
-  filenameWithoutExtension="${filename%.*}"
-  echo "converting $filenameWithoutExtension ..."
-  ./xml2json  -t xml2json $file --strip_text --strip_namespace --pretty -o "$filenameWithoutExtension".json
-done
diff --git a/packetcable-client/make_xml.sh b/packetcable-client/make_xml.sh
deleted file mode 100755 (executable)
index bbda02d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh 
-
-files=( *.json )
-for file in "${files[@]}"
-do
-  filename="${file##*/}"
-  filenameWithoutExtension="${filename%.*}"
-  echo "converting $filenameWithoutExtension ..."
-  ./xml2json  -t json2xml $file --strip_text --strip_namespace --pretty -o "$filenameWithoutExtension".xml
-done
diff --git a/packetcable-client/openflowmininet1.json b/packetcable-client/openflowmininet1.json
deleted file mode 100644 (file)
index 2a4c9ba..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-    "flow": {
-        "barrier": "false",
-        "cookie": "10",
-        "cookie_mask": "10",
-        "flow-name": "OpenflowMininet1",
-        "hard-timeout": "12",
-        "id": "168",
-        "idle-timeout": "34",
-        "installHw": "true",
-        "instructions": {
-            "instruction": {
-                "apply-actions": {
-                    "action": {
-                        "drop-action": null,
-                        "order": "0"
-                    }
-                },
-                "order": "0"
-            }
-        },
-        "match": {
-            "ethernet-match": {
-                "ethernet-type": {
-                    "type": "2048"
-                }
-            },
-            "ipv4-destination": "10.0.0.1/24"
-        },
-        "out_port": "1",
-        "priority": "2",
-        "strict": "false",
-        "table_id": "1"
-    }
-}
diff --git a/packetcable-client/openflowmininet1.xml b/packetcable-client/openflowmininet1.xml
deleted file mode 100644 (file)
index b367512..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<flow><barrier>false</barrier><flow-name>OpenflowMininet1</flow-name><idle-timeout>34</idle-timeout><cookie_mask>10</cookie_mask><hard-timeout>12</hard-timeout><priority>2</priority><strict>false</strict><cookie>10</cookie><out_port>1</out_port><table_id>1</table_id><installHw>true</installHw><id>168</id><match><ipv4-destination>10.0.0.1/24</ipv4-destination><ethernet-match><ethernet-type><type>2048</type></ethernet-type></ethernet-match></match><instructions><instruction><order>0</order><apply-actions><action><drop-action /><order>0</order></action></apply-actions></instruction></instructions></flow>
\ No newline at end of file
diff --git a/packetcable-client/openflowpica1.json b/packetcable-client/openflowpica1.json
deleted file mode 100644 (file)
index 857fd36..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-    "flow": {
-        "barrier": "false",
-        "cookie": "10",
-        "cookie_mask": "10",
-        "flow-name": "OpenflowPica1",
-        "hard-timeout": "12",
-        "id": "110",
-        "idle-timeout": "34",
-        "installHw": "false",
-        "instructions": {
-            "instruction": {
-                "apply-actions": {
-                    "action": {
-                        "drop-action": null,
-                        "order": "0"
-                    }
-                },
-                "order": "0"
-            }
-        },
-        "match": {
-            "ethernet-match": {
-                "ethernet-type": {
-                    "type": "2048"
-                }
-            },
-            "ipv4-destination": "10.0.0.1/24"
-        },
-        "out_port": "1",
-        "priority": "2",
-        "strict": "false",
-        "table_id": "0"
-    }
-}
diff --git a/packetcable-client/openflowpica1.xml b/packetcable-client/openflowpica1.xml
deleted file mode 100644 (file)
index fd6e435..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<flow><barrier>false</barrier><flow-name>OpenflowPica1</flow-name><idle-timeout>34</idle-timeout><cookie_mask>10</cookie_mask><hard-timeout>12</hard-timeout><priority>2</priority><strict>false</strict><cookie>10</cookie><out_port>1</out_port><table_id>0</table_id><installHw>false</installHw><id>110</id><match><ipv4-destination>10.0.0.1/24</ipv4-destination><ethernet-match><ethernet-type><type>2048</type></ethernet-type></ethernet-match></match><instructions><instruction><order>0</order><apply-actions><action><drop-action /><order>0</order></action></apply-actions></instruction></instructions></flow>
\ No newline at end of file
diff --git a/packetcable-client/packetcable.postman_collection.txt b/packetcable-client/packetcable.postman_collection.txt
deleted file mode 100644 (file)
index 6169375..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-{"version":1,"collections":[{"id":"939d9337-31ff-d3ab-aebb-4cdf2a375546","name":"packetcable","timestamp":1410626513886,"requests":[{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"039ccc4a-ef0b-d920-67c6-7890bb7f65bc","name":"packetcable-cmts-flow-delete <id>","description":"restconf for packetcable flow delete","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/cableflow:1/table/1/flow/111","method":"DELETE","headers":"","data":[],"dataMode":"params","timestamp":0,"responses":[],"version":2},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"2b82ad09-1b8a-e589-ff96-b1d5bbf8328d","name":"openflow-pica-flow-delete <id>","description":"restconf for openflow pica flow delete","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/113","method":"DELETE","headers":"","data":[],"dataMode":"params","timestamp":0,"responses":[],"version":2},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"4b42fefa-07b5-65ad-83b3-a82c116481c8","name":"openflow-mininet-flow-read <id>","description":"restconf for openflow mininet flow read","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/112","method":"GET","headers":"","data":"\n{\n    \"flow\": {\n        \"barrier\": \"false\",\n        \"cookie\": \"10\",\n        \"cookie_mask\": \"10\",\n        \"flow-name\": \"OpenflowMininet1\",\n        \"hard-timeout\": \"12\",\n        \"id\": \"168\",\n        \"idle-timeout\": \"34\",\n        \"installHw\": \"true\",\n        \"instructions\": {\n            \"instruction\": {\n                \"apply-actions\": {\n                    \"action\": {\n                        \"drop-action\": null,\n                        \"order\": \"0\"\n                    }\n                },\n                \"order\": \"0\"\n            }\n        },\n        \"match\": {\n            \"ethernet-match\": {\n                \"ethernet-type\": {\n                    \"type\": \"2048\"\n                }\n            },\n            \"ipv4-destination\": \"10.0.0.1/24\"\n        },\n        \"out_port\": \"1\",\n        \"priority\": \"2\",\n        \"strict\": \"false\",\n        \"table_id\": \"1\"\n    }\n}\n","dataMode":"raw","timestamp":0,"responses":[],"version":2},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"54e8c81e-3d0a-1e96-41db-b9826a9e6b97","name":"openflow-pica-read <id>","description":"restconf for openflow pica read","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/113","method":"GET","headers":"","data":"{\n    \"flow\": {\n        \"barrier\": \"false\",\n        \"cookie\": \"10\",\n        \"cookie_mask\": \"10\",\n        \"flow-name\": \"OpenflowPica1\",\n        \"hard-timeout\": \"12\",\n        \"id\": \"113\",\n        \"idle-timeout\": \"34\",\n        \"installHw\": \"false\",\n        \"instructions\": {\n            \"instruction\": {\n                \"apply-actions\": {\n                    \"action\": {\n                        \"drop-action\": null,\n                        \"order\": \"0\"\n                    }\n                },\n                \"order\": \"0\"\n            }\n        },\n        \"match\": {\n            \"ethernet-match\": {\n                \"ethernet-type\": {\n                    \"type\": \"2048\"\n                }\n            },\n            \"ipv4-destination\": \"10.0.0.1/24\"\n        },\n        \"out_port\": \"1\",\n        \"priority\": \"2\",\n        \"strict\": \"false\",\n        \"table_id\": \"0\"\n    }\n}\n","dataMode":"raw","timestamp":0,"responses":[],"version":2},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"76d66f2e-0390-6890-8f8e-e3f57adb898a","name":"packetcable-cmts-flow-flowspec-full-create <id>","description":"restconf for cableflow flow flowspec create","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/cableflow:1/table/1/flow/114","method":"PUT","headers":"","data":"\n{\n    \"flow\": {\n        \"barrier\": \"false\",\n        \"flow-name\": \"FooXCableFlowCrazyTrafficProfileFlowspec1\",\n        \"id\": \"114\",\n        \"installHw\": \"false\",\n        \"instructions\": {\n            \"instruction\": {\n                \"apply-actions\": {\n\t\t    \"action\": {\n\t\t\t    \"traffic-profile\": \"flowspec\",\n                \"f-authorized-envelope\": {\n                        \"token-bucket-rate\":\"0\",\n                        \"token-bucket-size\":\"2\",\n                        \"peak-data-rate\": \"0\",\n                        \"minimum-policed-unit\":\"1\",\n                        \"maximum-packet-size\":\"500\",\n                        \"rate\":\"0\",\n                        \"slack-termâ€\9d:â€\9d0â€\9d\n                },\n                \"f-reserved-envelope\": {\n                        \"token-bucket-rate\":\"0\",\n                        \"token-bucket-size\":\"2\",\n                        \"peak-data-rate\": \"0\",\n                        \"minimum-policed-unit\":\"1\",\n                        \"maximum-packet-size\":\"500\",\n                        \"rate\":\"0\",\n                        \"slack-termâ€\9d:â€\9d0â€\9d\n                },\n                \"f-committed-envelope\": {\n                        \"token-bucket-rate\":\"0\",\n                        \"token-bucket-size\":\"2\",\n                        \"peak-data-rate\": \"0\",\n                        \"minimum-policed-unit\":\"1\",\n                        \"maximum-packet-size\":\"500\",\n                        \"rate\":\"0\",\n                        \"slack-term\":\"0\"\n                }\n\n                        \"order\": \"0\"\n\t\t    }\n                },\n                \"order\": \"0\"\n            }\n        },\n        \"match\": {\n            \"ethernet-match\": {\n                \"ethernet-type\": {\n                    \"type\": \"2048\"\n                }\n            },\n            \"ipv4-destination\": \"10.0.0.1/24\"\n        },\n        \"priority\": \"2\",\n    }\n}","dataMode":"raw","timestamp":0,"version":2,"time":1410644964893},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"7da2caa8-84af-07d0-cacf-439c1aa8c482","name":"packetcable-cmts-flowspec-delete <id>","description":"packetcable cmts flowspec delete","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/cableflow:1/table/1/flow/114","method":"DELETE","headers":"","data":[],"dataMode":"params","timestamp":0,"responses":[],"version":2},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"858b4d04-6fc0-ad39-90c1-906d1ca9e34e","name":"packetcable-cmts-flow-best-effort-full-create <id>","description":"restconf for cableflow flow best-effort create","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/cableflow:1/table/1/flow/115","method":"PUT","headers":"","data":"\n{\n    \"flow\": {\n        \"barrier\": \"false\",\n        \"flow-name\": \"FooXCableFlowCrazyTrafficProfileFBesteffort1\",\n        \"id\": \"115\",\n        \"installHw\": \"false\",\n        \"instructions\": {\n            \"instruction\": {\n                \"apply-actions\": {\n\t\t    \"action\": {\n\t\t\t    \"traffic-profile\": \"best-effort\",\n                \"be-authorized-envelope\": {\n                        \"traffic-priority\":\"0\",\n                        \"reserved0\":\"0\",\n                        \"reserved1\":\"0\",\n                        \"request-transmission-policy\":\"0\",\n                        \"maximum-sustained-traffic-rate\":\"0\",\n                        \"maximum-traffic-burst\":\"3044\",\n                        \"maximum-reserved-traffic-rate\":\"0\",\n                        \"traffic-rate-packet-size-maximum-concatenated-burst\":\"0\",\n                        \"assumed-minimum-reserved\":\"1522\",\n                        \"required-attribute-mask\":\"0\",\n                        \"forbidden-attribute-mask\":\"0\",\n                        \"attribute-aggregation-rule-mask\":\"0\",\n                },\n                \"be-reserved-envelope\": {\n                        \"traffic-priority\":\"0\",\n                        \"reserved0\":\"0\",\n                        \"reserved1\":\"0\",\n                        \"request-transmission-policy\":\"0\",\n                        \"maximum-sustained-traffic-rate\":\"0\",\n                        \"maximum-traffic-burst\":\"3044\",\n                        \"maximum-reserved-traffic-rate\":\"0\",\n                        \"traffic-rate-packet-size-maximum-concatenated-burst\":\"0\",\n                        \"assumed-minimum-reserved\":\"1522\",\n                        \"required-attribute-mask\":\"0\",\n                        \"forbidden-attribute-mask\":\"0\",\n                        \"attribute-aggregation-rule-mask\":\"0\",\n                },\n                \"be-committed-envelope\": {\n                        \"traffic-priority\":\"0\",\n                        \"reserved0\":\"0\",\n                        \"reserved1\":\"0\",\n                        \"request-transmission-policy\":\"0\",\n                        \"maximum-sustained-traffic-rate\":\"0\",\n                        \"maximum-traffic-burst\":\"3044\",\n                        \"maximum-reserved-traffic-rate\":\"0\",\n                        \"traffic-rate-packet-size-maximum-concatenated-burst\":\"0\",\n                        \"assumed-minimum-reserved\":\"1522\",\n                        \"required-attribute-mask\":\"0\",\n                        \"forbidden-attribute-mask\":\"0\",\n                        \"attribute-aggregation-rule-mask\":\"0\",\n                }\n\n                        \"order\": \"0\"\n\t\t    }\n                },\n                \"order\": \"0\"\n            }\n        },\n        \"match\": {\n            \"ethernet-match\": {\n                \"ethernet-type\": {\n                    \"type\": \"2048\"\n                }\n            },\n            \"ipv4-destination\": \"10.0.0.1/24\"\n        },\n        \"priority\": \"2\",\n    }\n}","dataMode":"raw","timestamp":0,"responses":[],"version":2},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"86a0777a-40c3-c033-0a61-0b58b73d5c46","name":"packetcable-cmts-read <id>","description":"restconf for packetcable: cmts get <id>","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/1/packetcable-cmts:cmts-node/","method":"GET","headers":"","data":[],"dataMode":"params","timestamp":0,"version":2,"time":1410629229366},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"a9a11130-027c-59c7-3618-40203b3533f6","name":"openflow-mininet-flow-delete <id>","description":"restconf for openflow mininet flow delete","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/112","method":"DELETE","headers":"","data":[],"dataMode":"params","timestamp":0,"responses":[],"version":2},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"c2f1d250-16aa-f70e-849f-9e21367bedb2","name":"packetcable-cmts-best-effort-delete <id>","description":"packetcable cmts best-effort delete","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/cableflow:1/table/1/flow/115","method":"DELETE","headers":"","data":[],"dataMode":"params","timestamp":0,"version":2,"time":1410645448096},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"d6c92bec-544f-e72e-71ef-b504d248d7c0","name":"packetcable-cmts-flow-create <id>","description":"restconf for packetcable flow create","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/packetcable-cmts:1/table/1/flow/111","method":"PUT","headers":"","data":"\n{\n    \"flow\": {\n        \"barrier\": \"false\",\n        \"flow-name\": \"FooXCableFlow2\",\n        \"id\": \"111\",\n        \"installHw\": \"false\",\n        \"instructions\": {\n            \"instruction\": {\n                \"apply-actions\": {\n                    \"action\": {\n                    \t\"traffic-profile\": \"best-effort\",\n                        \"order\": \"0\"\n                    }\n                },\n                \"order\": \"0\"\n            }\n        },\n        \"match\": {\n            \"ethernet-match\": {\n                \"ethernet-type\": {\n                    \"type\": \"2048\"\n                }\n            },\n            \"ipv4-destination\": \"10.0.0.1/24\"\n        },\n        \"priority\": \"2\",\n    }\n}","dataMode":"raw","timestamp":0,"version":2,"time":1410669925062},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"d8281270-48b5-c4b9-ed5e-39770946fd8c","name":"packetcable-cmts-create <id>","description":"restconf for packetcable create","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/1/packetcable-cmts:cmts-node/","method":"PUT","headers":"","data":"{\n    \"packetcable-cmts:cmts-node\": {\n        \"port\": 3918,\n        \"address\": \"10.200.90.3\"\n    }\n}","dataMode":"raw","timestamp":0,"version":2,"time":1410670793319},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"e4830700-e6b7-2e4a-505e-9286c52ea148","name":"openflow-mininet-flow-create <id>","description":"restconf for openflow mininet flow create","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/112","method":"PUT","headers":"","data":"\n{\n    \"flow\": {\n        \"barrier\": \"false\",\n        \"cookie\": \"10\",\n        \"cookie_mask\": \"10\",\n        \"flow-name\": \"OpenflowMininet1\",\n        \"hard-timeout\": \"12\",\n        \"id\": \"112\",\n        \"idle-timeout\": \"34\",\n        \"installHw\": \"true\",\n        \"instructions\": {\n            \"instruction\": {\n                \"apply-actions\": {\n                    \"action\": {\n                        \"drop-action\": null,\n                        \"order\": \"0\"\n                    }\n                },\n                \"order\": \"0\"\n            }\n        },\n        \"match\": {\n            \"ethernet-match\": {\n                \"ethernet-type\": {\n                    \"type\": \"2048\"\n                }\n            },\n            \"ipv4-destination\": \"10.0.0.1/24\"\n        },\n        \"out_port\": \"1\",\n        \"priority\": \"2\",\n        \"strict\": \"false\",\n        \"table_id\": \"1\"\n    }\n}\n","dataMode":"raw","timestamp":0,"version":2,"time":1410644995513},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"e8a112b2-b44f-4025-c34b-de4dcca0269b","name":"packetcable-cmts-delete <id>","description":"restconf for packetcable delete","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/1/packetcable-cmts:cmts-node/","method":"DELETE","headers":"","data":[],"dataMode":"params","timestamp":0,"responses":[],"version":2},{"collectionId":"939d9337-31ff-d3ab-aebb-4cdf2a375546","id":"fab81634-1b9c-c04d-3fdf-421d29cc7cbb","name":"openflow-pica-flow-create <id>","description":"restconf for openflow pica flow create","url":"http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/113","method":"PUT","headers":"","data":"{\n    \"flow\": {\n        \"barrier\": \"false\",\n        \"cookie\": \"10\",\n        \"cookie_mask\": \"10\",\n        \"flow-name\": \"OpenflowPica1\",\n        \"hard-timeout\": \"12\",\n        \"id\": \"113\",\n        \"idle-timeout\": \"34\",\n        \"installHw\": \"false\",\n        \"instructions\": {\n            \"instruction\": {\n                \"apply-actions\": {\n                    \"action\": {\n                        \"drop-action\": null,\n                        \"order\": \"0\"\n                    }\n                },\n                \"order\": \"0\"\n            }\n        },\n        \"match\": {\n            \"ethernet-match\": {\n                \"ethernet-type\": {\n                    \"type\": \"2048\"\n                }\n            },\n            \"ipv4-destination\": \"10.0.0.1/24\"\n        },\n        \"out_port\": \"1\",\n        \"priority\": \"2\",\n        \"strict\": \"false\",\n        \"table_id\": \"0\"\n    }\n}\n","dataMode":"raw","timestamp":0,"version":2,"time":1410644979188}]}],"environments":[],"headerPresets":[],"globals":[]}
-
diff --git a/packetcable-client/restconftest.py b/packetcable-client/restconftest.py
deleted file mode 100755 (executable)
index fe41c4a..0000000
+++ /dev/null
@@ -1,456 +0,0 @@
-#!/usr/bin/env python
-
-__author__ = 'xsited'
-import os
-import httplib
-import json
-import yaml
-import base64
-import string
-from urlparse import urlparse
-from pprint import pprint
-from os.path import basename
-
-toggle = 1
-
-# consider refectoring with request http://docs.python-requests.org/en/latest/index.html
-
-class Error:
-    # indicates an HTTP error
-    def __init__(self, url, errcode, errmsg, headers):
-        self.url = url
-        self.errcode = errcode
-        self.errmsg = errmsg
-        self.headers = headers
-    def __repr__(self):
-        return (
-            "<Error for %s: %s %s>" %
-            (self.url, self.errcode, self.errmsg)
-            )
-
-
-class RestfulAPI(object):
-    def __init__(self, server):
-        self.server = server
-        self.path = '/wm/staticflowentrypusher/json'
-        self.auth = ''
-        self.port = 8080
-
-    def get_server(self):
-        return self.server
-
-    def set_server(self, server):
-        self.server = server
-
-
-    def set_path(self, path):
-       #print path
-        self.path = path
-
-#    def set_path(self, path, port):
-#        self.path = path
-#        self.port = port
-
-    def set_port(self, port):
-       #print port
-        self.port = port
-
-    def use_creds(self):
-       u = self.auth is not None and len(self.auth) > 0
-#      p = self.password is not None and len(self.password) > 0
-        return u
-
-    def credentials(self, username, password):
-        self.auth = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
-
-    def get(self, data=''):
-        ret = self.rest_call({}, 'GET')
-        #return json.loads(ret[2])
-        return ret
-
-    def set(self, data):
-        #ret = self.rest_call(data, 'PUT')
-        ret = self.rest_call2(data, 'PUT')
-       print ret[0], ret[1]
-        # return ret[0] == 200
-        return ret
-
-    def post(self, data):
-        ret = self.rest_call(data, 'POST')
-        #ret = self.rest_call2(data, 'POST')
-       print ret[0], ret[1]
-       return ret
-
-    def put(self, data):
-        ret = self.rest_call(data, 'PUT')
-        return ret
-        #return ret[0] == 200
-
-
-    def remove(self, objtype, data):
-        ret = self.rest_call(data, 'DELETE')
-        #return ret[0] == 200
-        return ret
-
-    def show(self, data):
-       print ""
-       print json.dumps(data, indent=4, sort_keys=True)
-#       print 'DATA:', repr(data)
-#
-#      print ""
-#       data_string = json.dumps(data)
-#       print 'JSON:', data_string
-#
-#      print ""
-#       data_string = json.dumps(data)
-#       print 'ENCODED:', data_string
-#
-#      print ""
-#       decoded = json.loads(data_string)
-#       print 'DECODED:', decoded
-
-
-    def rest_call2(self, data, action, content_type='json'):
-
-        #conn = httplib.HTTPConnection(self.server, self.port)
-        conn = httplib.HTTP(self.server, self.port)
-        conn.putrequest(action, self.path)
-       conn.putheader("Host", self.server+':%s'%self.port)
-       conn.putheader("User-Agent", "Python HTTP Auth")
-        conn.putheader('Content-type', 'application/%s' % content_type)
-        body = json.dumps(data)
-       #conn.putheader("Content-length", "%d" % len(data))
-       conn.putheader("Content-length", "%d" % len(body))
-        if self.use_creds():
-        #    print "using creds"
-            conn.putheader("Authorization", "Basic %s" % self.auth)
-        conn.endheaders()
-       
-        conn.send(body)
-       errcode, errmsg, headers = conn.getreply()
-       ret = (errcode, errmsg, headers)
-
-        #if errcode != 201:
-        #   raise Error(self.path, errcode, errmsg, headers)
-
-        # get response
-        #response = conn.getresponse()
-       #headers = response.read()
-        #ret = (response.status, response.reason, headers)
-        #if response.status != 200:
-        #    raise Error(self.path, response.status, response.reason, headers)
-       return ret
-
-
-    def rest_call(self, data, action, content_type='json'):
-       # this? 
-        putheaders = {'content-type': 'application/json'}
-        getheaders = {'Accept': 'application/json'}
-        body = json.dumps(data)
-       if self.use_creds():
-       #    print "using creds"
-            headers = {
-                'Content-type': 'application/%s' % content_type,
-                'Accept': 'application/%s' % content_type,
-               'Content-length': "%d" % len(body),
-               'Authorization': "Basic %s" % self.auth,
-            }
-        else:
-            headers = {
-                'Content-type': 'application/%s' % content_type,
-                'Accept': 'application/%s' % content_type,
-               'Content-length': "%d" % len(body),
-            }
-               
-       print self.server+':',self.port, self.path
-        conn = httplib.HTTPConnection(self.server, self.port)
-        conn.request(action, self.path, body, headers)
-        response = conn.getresponse()
-       data = response.read()
-        ret = (response.status, response.reason, data)
-        #print "status %d %s" % (response.status,response.reason)
-        conn.close()
-        return ret
-
-
-class Menu(object):
-    def __init__(self):
-        pass
-
-    def print_menu(self):
-        print (30 * '-')
-        print ("   CABLEFLOW          ")
-        print (30 * '-')
-        print ("1.  Add CMTS 1        ")
-        print ("2.  Add CMTS 2        ")
-        print ("3.  Add Flow 1 CMTS 1 ")
-        print ("4.  Add Flow 2 CMTS 2 ")
-        print ("5.  Remove Flow 1 CMTS 1")
-        print ("6.  Remove Flow 2 CMTS 2")
-        print ("7.  Remove All Flows  ")
-        print ("8.  List Flow Stats   ")
-        print ("9.  List Topology     ")
-        print ("10. List Flows        ")
-        print ("11. Remove CMTS 1     ")
-        print ("12. Remove CMTS 2     ")
-        print ("q. Quit               ")
-#        print (30 * '-')
-
-
-    def no_such_action(self):
-        print "Invalid option!"
-
-    def run(self):
-       #self.print_menu()
-        actions = {
-       "1": tests.flow_add_1, 
-       "2": tests.flow_add_2, 
-       "3": tests.flow_add_several, 
-       "4": tests.flow_remove_1,
-       "5": tests.flow_remove_2,
-       "6": tests.flow_remove_all,
-       "8": tests.flow_list_stats,
-       "9": tests.topology_list,
-       "10":tests.flow_list,
-       "q": tests.exit_app,
-        }
-
-        while True:
-            self.print_menu()
-            selection = raw_input("Enter selection: ")
-            if "quit" == selection:
-                return
-            toDo = actions.get(selection, self.no_such_action)
-            toDo()
-
-
-
-
-class ODLCableflowRestconf(object):
-    def __init__(self, ws):
-       self.ws = ws
-       self.ws.set_port(8181)  
-       
-
-    def topology(self):
-        self.ws.set_path('/restconf/operational/opendaylight-inventory:nodes')
-        content = self.ws.get()
-        j=json.loads(content[2])
-        ws.show(j)
-
-    def cableflow_list(self):
-        self.ws.set_path('/config/opendaylight-inventory:nodes/node/%d/flow-node-inventory:table/0/flow')
-        content = self.ws.get()
-        j=json.loads(content[2])
-        self.ws.show(j)
-        #ws.show(content[2])
-       return(j)
-
-    def cableflow_update(self, flow):
-        self.ws.set_path('/restconf/config/opendaylight-inventory:nodes/node/openflow:%d/table/0/flow/%d"' % flow['node']['id'],  flow['id'] )
-        content = self.ws.post(flow)
-        j=json.loads(content[2])
-
-    def cableflow_list(self):
-        self.ws.set_path('/restconf/config/opendaylight-inventory:nodes/node/openflow:%d/table/0/flow/%d')
-        content = self.ws.get()
-        j=json.loads(content[2])
-        ws.show(j)
-        #ws.show(content[2])
-
-    def cableflow_add(self, flow):
-# PUT http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:%d/table/0/flow/%d"
-        self.ws.set_path('/restconf/config/opendaylight-inventory:nodes/node/openflow:%d/table/0/flow/%d"' % flow['node']['id'],  flow['id'] )
-        self.ws.show(flow)
-        content = self.ws.put(flow)
-        #print content
-       flowadd_response_codes = {
-       201:"Flow Config processed successfully",
-       400:"Failed to create Static Flow entry due to invalid flow configuration",
-       401:"User not authorized to perform this operation",
-       404:"The Container Name or nodeId is not found",
-       406:"Cannot operate on Default Container when other Containers are active",
-       409:"Failed to create Static Flow entry due to Conflicting Name or configuration",
-       500:"Failed to create Static Flow entry. Failure Reason included in HTTP Error response",
-       503:"One or more of Controller services are unavailable",
-       } 
-       msg=flowadd_response_codes.get(content[0])
-       print content[0], content[1], msg
-
-    def cableflow_remove(self, flow):
-        self.ws.set_path('/restconf/config/opendaylight-inventory:nodes/node/openflow:%d/table/0/flow/%d"' % flow['node']['id'],  flow['id'] )
-        content = self.ws.remove("", flow)
-
-       flowdelete_reponse_codes = {
-       204:"Flow Config deleted successfully",
-       401:"User not authorized to perform this operation",
-       404:"The Container Name or Node-id or Flow Name passed is not found",
-       406:"Failed to delete Flow config due to invalid operation. Failure details included in HTTP Error response",
-       500:"Failed to delete Flow config. Failure Reason included in HTTP Error response",
-       503:"One or more of Controller service is unavailable",
-       }
-       msg=flowdelete_reponse_codes.get(content[0])
-       print content[0], content[1], msg
-
-    def cableflow_remove_all(self):
-       allFlowConfigs = self.cableflow_list()
-        flowConfigs = allFlowConfigs['flowConfig']
-        for fl in flowConfigs:
-           print "Removing ", fl['name']
-           self.cableflow_remove(fl)
-               
-
-
-    def statistics_flows(self):
-        self.ws.set_path('/controller/nb/v2/statistics/default/flow')
-        content = self.ws.get()
-        allFlowStats = json.loads(content[2])
-
-        flowStats = allFlowStats['flowStatistics']
-       # These JSON dumps were handy when trying to parse the responses 
-        #print json.dumps(flowStats[0]['flowStat'][1], indent = 2)
-       #print json.dumps(flowStats[4], indent = 2)
-        for fs in flowStats:
-            print "\nSwitch ID : " + fs['node']['id']
-           print '{0:8} {1:8} {2:5} {3:15}'.format('Count', 'Action', 'Port', 'DestIP')
-           if not 'flowStatistic' in fs.values(): 
-               print '              none'
-               continue
-           for aFlow in fs['flowStatistic']:
-               #print "*", aFlow, "*", " ", len(aFlow), " ", not aFlow
-               count = aFlow['packetCount']
-               actions = aFlow['flow']['actions'] 
-               actionType = ''
-               actionPort = ''
-               #print actions
-               if(type(actions) == type(list())):
-                   actionType = actions[1]['type']
-                   actionPort = actions[1]['port']['id']
-               else:
-                   actionType = actions['type']
-                   actionPort = actions['port']['id']
-               dst = aFlow['flow']['match']['matchField'][0]['value']
-               print '{0:8} {1:8} {2:5} {3:15}'.format(count, actionType, actionPort, dst)
-
-
-    def cableflow_remove_all(self):
-       allFlowConfigs = self.cableflow_list()
-        flowConfigs = allFlowConfigs['flowConfig']
-        for fl in flowConfigs:
-           print "Removing ", fl['name']
-           self.cableflow_remove(fl)
-               
-
-
-class CableflowTests(object):
-    def __init__(self, odl):
-       self.flows = {}
-       self.odl = odl
-    def cmts_add_1():
-        print "Add cmts 1     "
-        self.odl.cmts_add(cmts1)
-
-    def cmts_add_2():
-        print "Add cmts 2     "
-        self.odl.cmts_add(cmts2)
-
-    def cmts_remove_1():
-        print "Add cmts 1     "
-        self.odl.cmts_remove(cmts1)
-
-    def cmts_remove_2():
-        print "Add cmts 2     "
-        self.odl.cmts_remove(cmts2)
-
-    def flow_add_1():
-        print "Add Flow 1     "
-        self.odl.cableflow_add(flow1)
-
-
-    def flow_add_2():
-        print "Add Flow 2     "
-        self.odl.cableflow_add(flow2)
-
-    def flow_add_several():
-        print "Add Flow Several     "
-        self.odl.cableflow_add(flow1)
-        self.odl.cableflow_add(flow2)
-        self.odl.cableflow_add(flow3)
-        self.odl.cableflow_add(flow4)
-        self.odl.cableflow_add(flow5)
-
-
-    def flow_remove_1():
-        print "Remove Flow 1  "
-        self.odl.cableflow_remove(flow1)
-
-    def flow_remove_2():
-        print "Remove Flow 2  "
-        self.odl.cableflow_remove(flow2)
-
-    def flow_remove_all():
-        print "Remove All Flows "
-        self.odl.cableflow_remove_all()
-
-    def flow_list_stats():
-        print "List Flow Stats"
-        self.odl.statistics_flows()
-
-    def topology_list():
-        print "List Topology  "
-        self.odl.topology()
-
-    def flow_list():
-        print "List Flows  "
-        self.odl.cableflow_list()
-
-
-    def flows_read(self, content_type='json'):
-        #print "content_type = %s" % content_type
-       for path, dirs, files in os.walk('.'):
-            for filename in files:
-                if filename.endswith(".%s" % content_type):
-                    base_filename = basename(filename)
-                    # print base_filename
-                   fn = os.path.splitext(os.path.basename(filename))[0]  
-                    #print filename
-                   with open(filename) as fp:
-                        data = fp.read()
-                        # print(data)
-                        # jdata = yaml.load ( data  )
-                        # print(jdata)
-                        self.flows[fn]=data #equivalent to: self.varname= 'something'
-                       if content_type == "xml":
-                            pprint (self.flows[fn], width=4)
-                       else:
-                           #print fn
-                            #pprint (self.flows[fn], width=4)
-                            json.dumps(json.loads(data), indent=4)
-
-    def flows_print(self):
-       # print flow dictionary
-       l = self.flows.items()
-       l.sort()
-        #for k,v in self.flows.items():
-        for k,v in l:
-            print k
-
-    def exit_app(self):
-        print "Quit           "
-        exit(0)
-
-
-if __name__ == "__main__":
-    ws = RestfulAPI('127.0.0.1')
-    ws.credentials('admin', 'admin')
-    odl = ODLCableflowRestconf(ws)
-    tests = CableflowTests(odl)
-    tests.flows_read()
-    tests.flows_print()
-
-    menu=Menu()
-    menu.run()
-    exit(0)
-
-
-
diff --git a/packetcable-client/xml2json b/packetcable-client/xml2json
deleted file mode 100755 (executable)
index 7657b9d..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-#!/usr/bin/env python
-
-"""xml2json.py  Convert XML to JSON
-
-Relies on ElementTree for the XML parsing.  This is based on
-pesterfish.py but uses a different XML->JSON mapping.
-The XML->JSON mapping is described at
-http://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html
-
-Rewritten to a command line utility by Hay Kranen < github.com/hay > with
-contributions from George Hamilton (gmh04) and Dan Brown (jdanbrown)
-
-XML                              JSON
-<e/>                             "e": null
-<e>text</e>                      "e": "text"
-<e name="value" />               "e": { "@name": "value" }
-<e name="value">text</e>         "e": { "@name": "value", "#text": "text" }
-<e> <a>text</a ><b>text</b> </e> "e": { "a": "text", "b": "text" }
-<e> <a>text</a> <a>text</a> </e> "e": { "a": ["text", "text"] }
-<e> text <a>text</a> </e>        "e": { "#text": "text", "a": "text" }
-
-This is very similar to the mapping used for Yahoo Web Services
-(http://developer.yahoo.com/common/json.html#xml).
-
-This is a mess in that it is so unpredictable -- it requires lots of testing
-(e.g. to see if values are lists or strings or dictionaries).  For use
-in Python this could be vastly cleaner.  Think about whether the internal
-form can be more self-consistent while maintaining good external
-characteristics for the JSON.
-
-Look at the Yahoo version closely to see how it works.  Maybe can adopt
-that completely if it makes more sense...
-
-R. White, 2006 November 6
-"""
-
-import json
-import optparse
-import sys
-import os
-
-import xml.etree.cElementTree as ET
-
-
-def strip_tag(tag):
-    strip_ns_tag = tag
-    split_array = tag.split('}')
-    if len(split_array) > 1:
-        strip_ns_tag = split_array[1]
-        tag = strip_ns_tag
-    return tag
-
-
-def elem_to_internal(elem, strip_ns=1, strip=1):
-    """Convert an Element into an internal dictionary (not JSON!)."""
-
-    d = {}
-    elem_tag = elem.tag
-    if strip_ns:
-        elem_tag = strip_tag(elem.tag)
-    else:
-        for key, value in list(elem.attrib.items()):
-            d['@' + key] = value
-
-    # loop over subelements to merge them
-    for subelem in elem:
-        v = elem_to_internal(subelem, strip_ns=strip_ns, strip=strip)
-
-        tag = subelem.tag
-        if strip_ns:
-            tag = strip_tag(subelem.tag)
-
-        value = v[tag]
-
-        try:
-            # add to existing list for this tag
-            d[tag].append(value)
-        except AttributeError:
-            # turn existing entry into a list
-            d[tag] = [d[tag], value]
-        except KeyError:
-            # add a new non-list entry
-            d[tag] = value
-    text = elem.text
-    tail = elem.tail
-    if strip:
-        # ignore leading and trailing whitespace
-        if text:
-            text = text.strip()
-        if tail:
-            tail = tail.strip()
-
-    if tail:
-        d['#tail'] = tail
-
-    if d:
-        # use #text element if other attributes exist
-        if text:
-            d["#text"] = text
-    else:
-        # text is the value if no attributes
-        d = text or None
-    return {elem_tag: d}
-
-
-def internal_to_elem(pfsh, factory=ET.Element):
-
-    """Convert an internal dictionary (not JSON!) into an Element.
-
-    Whatever Element implementation we could import will be
-    used by default; if you want to use something else, pass the
-    Element class as the factory parameter.
-    """
-
-    attribs = {}
-    text = None
-    tail = None
-    sublist = []
-    tag = list(pfsh.keys())
-    if len(tag) != 1:
-        raise ValueError("Illegal structure with multiple tags: %s" % tag)
-    tag = tag[0]
-    value = pfsh[tag]
-    if isinstance(value, dict):
-        for k, v in list(value.items()):
-            if k[:1] == "@":
-                attribs[k[1:]] = v
-            elif k == "#text":
-                text = v
-            elif k == "#tail":
-                tail = v
-            elif isinstance(v, list):
-                for v2 in v:
-                    sublist.append(internal_to_elem({k: v2}, factory=factory))
-            else:
-                sublist.append(internal_to_elem({k: v}, factory=factory))
-    else:
-        text = value
-    e = factory(tag, attribs)
-    for sub in sublist:
-        e.append(sub)
-    e.text = text
-    e.tail = tail
-    return e
-
-
-def elem2json(elem, options, strip_ns=1, strip=1):
-
-    """Convert an ElementTree or Element into a JSON string."""
-
-    if hasattr(elem, 'getroot'):
-        elem = elem.getroot()
-
-    if options.pretty:
-        return json.dumps(elem_to_internal(elem, strip_ns=strip_ns, strip=strip), sort_keys=True, indent=4, separators=(',', ': '))
-    else:
-        return json.dumps(elem_to_internal(elem, strip_ns=strip_ns, strip=strip))
-
-
-def json2elem(json_data, factory=ET.Element):
-
-    """Convert a JSON string into an Element.
-
-    Whatever Element implementation we could import will be used by
-    default; if you want to use something else, pass the Element class
-    as the factory parameter.
-    """
-
-    return internal_to_elem(json.loads(json_data), factory)
-
-
-def xml2json(xmlstring, options, strip_ns=1, strip=1):
-
-    """Convert an XML string into a JSON string."""
-
-    elem = ET.fromstring(xmlstring)
-    return elem2json(elem, options, strip_ns=strip_ns, strip=strip)
-
-
-def json2xml(json_data, factory=ET.Element):
-
-    """Convert a JSON string into an XML string.
-
-    Whatever Element implementation we could import will be used by
-    default; if you want to use something else, pass the Element class
-    as the factory parameter.
-    """
-    if not isinstance(json_data, dict):
-        json_data = json.loads(json_data)
-
-    elem = internal_to_elem(json_data, factory)
-    return ET.tostring(elem)
-
-
-def main():
-    p = optparse.OptionParser(
-        description='Converts XML to JSON or the other way around.  Reads from standard input by default, or from file if given.',
-        prog='xml2json',
-        usage='%prog -t xml2json -o file.json [file]'
-    )
-    p.add_option('--type', '-t', help="'xml2json' or 'json2xml'", default="xml2json")
-    p.add_option('--out', '-o', help="Write to OUT instead of stdout")
-    p.add_option(
-        '--strip_text', action="store_true",
-        dest="strip_text", help="Strip text for xml2json")
-    p.add_option(
-        '--pretty', action="store_true",
-        dest="pretty", help="Format JSON output so it is easier to read")
-    p.add_option(
-        '--strip_namespace', action="store_true",
-        dest="strip_ns", help="Strip namespace for xml2json")
-    p.add_option(
-        '--strip_newlines', action="store_true",
-        dest="strip_nl", help="Strip newlines for xml2json")
-    options, arguments = p.parse_args()
-
-    inputstream = sys.stdin
-    if len(arguments) == 1:
-        try:
-            inputstream = open(arguments[0])
-        except:
-            sys.stderr.write("Problem reading '{0}'\n".format(arguments[0]))
-            p.print_help()
-            sys.exit(-1)
-
-    input = inputstream.read()
-
-    strip = 0
-    strip_ns = 0
-    if options.strip_text:
-        strip = 1
-    if options.strip_ns:
-        strip_ns = 1
-    if options.strip_nl:
-        input = input.replace('\n', '').replace('\r','')
-    if (options.type == "xml2json"):
-        out = xml2json(input, options, strip_ns, strip)
-    else:
-        out = json2xml(input)
-
-    if (options.out):
-        file = open(options.out, 'w')
-        file.write(out)
-        file.close()
-    else:
-        print(out)
-
-if __name__ == "__main__":
-    main()
-
diff --git a/packetcable-config/pom.xml b/packetcable-config/pom.xml
deleted file mode 100644 (file)
index 2826d53..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!--
- Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
-
- This program and the accompanying materials are made available under the
- terms of the Eclipse Public License v1.0 which accompanies this distribution,
- and is available at http://www.eclipse.org/legal/epl-v10.html
---><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">\r
-\r
-  <modelVersion>4.0.0</modelVersion>\r
-\r
-  <parent>\r
-    <artifactId>packetcable</artifactId>\r
-    <groupId>org.opendaylight.packetcable</groupId>\r
-    <version>1.3.0-SNAPSHOT</version>\r
-  </parent>\r
-  <!--
-    Necessary TODO: Hookup your parent pom here, else you will not get necessary versions,
-    maven repos etc.  If you run this archetype in a subdirectory of your project, it
-    will pick the pom.xml from the parent directory as the parent pom, which may or may
-    not be correct.
-  -->\r
-  <!-- 
-    Necessary TODO: Replace the contents of src/main/resources/80-packetcable.xml with
-    the proper config subsystem contents for your module
-  -->\r
-  <artifactId>packetcable-config</artifactId>\r
-  <groupId>org.opendaylight.packetcable</groupId>\r
-  <description>Configuration files for md-sal</description>\r
-  <!-- Optional TODO: Uncomment version if you are not using a parent pom.xml
-   <version>1.2.0-SNAPSHOT</version>
-   -->\r
-  <packaging>jar</packaging>\r
-  <properties>\r
-      <!-- Optional TODO: Rename your configfile to taste -->\r
-      <configfile>80-packetcable.xml</configfile>\r
-  </properties>\r
-  <build>\r
-    <plugins>\r
-        <plugin>\r
-        <groupId>org.codehaus.mojo</groupId>\r
-        <artifactId>build-helper-maven-plugin</artifactId>\r
-        <executions>\r
-          <execution>\r
-            <id>attach-artifacts</id>\r
-            <goals>\r
-              <goal>attach-artifact</goal>\r
-            </goals>\r
-            <phase>package</phase>\r
-            <configuration>\r
-              <artifacts>\r
-                <artifact>\r
-                  <file>${project.build.directory}/classes/${configfile}</file>\r
-                  <type>xml</type>\r
-                  <classifier>config</classifier>\r
-                </artifact>\r
-                <!--
-                  Optional TODO: Add additional config files
-                    You may need to add more than one config file
-                    if so, you just need to add additional <artifact> entries
-                    here WITH DIFFERENT CLASSIFIERS
-                    Example:
-                    <artifact>
-                      <file>${project.build.directory}/classes/<another-configfile></file>
-                      <type>xml</type>
-                      <classifier>config-<meaningful suffix to describe your other configfile></classifier>
-                    </artifact>
-                -->\r
-              </artifacts>\r
-            </configuration>\r
-          </execution>\r
-        </executions>\r
-      </plugin>\r
-    </plugins>\r
-  </build>\r
-  <scm>\r
-      <connection>scm:git:ssh://git.opendaylight.org:29418/packetcable.git</connection>\r
-      <developerConnection>scm:git:ssh://git.opendaylight.org:29418/packetcable.git</developerConnection>\r
-      <tag>HEAD</tag>\r
-      <url>https://git.opendaylight.org/gerrit/gitweb?p=packetcable.git;a=summary</url>\r
-   </scm>\r
-</project>\r
diff --git a/packetcable-config/src/main/resources/80-packetcable.xml b/packetcable-config/src/main/resources/80-packetcable.xml
deleted file mode 100644 (file)
index bbf95ed..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
-
- This program and the accompanying materials are made available under the
- terms of the Eclipse Public License v1.0 which accompanies this distribution,
- and is available at http://www.eclipse.org/legal/epl-v10.html
--->
-<snapshot>
-    <required-capabilities>
-        <capability>urn:opendaylight:params:xml:ns:yang:packetcable:packetcable-provider:impl?module=packetcable-provider-impl&amp;revision=2014-01-31</capability>
-        <capability>urn:opendaylight:params:xml:ns:yang:packetcable:packetcable-provider?module=packetcable-provider&amp;revision=2014-01-31</capability>
-        <capability>urn:opendaylight:node:cmts:broker?module=packetcable-broker&amp;revision=2014-09-09</capability>
-        <capability>urn:opendaylight:packetcable:match:types?module=packetcable-match-types&amp;revision=2014-09-09</capability>
-        <capability>urn:opendaylight:flow:traffic-profile?module=packetcable-traffic-profile&amp;revision=2014-09-08</capability>
-    </required-capabilities>
-    <configuration>
-
-        <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-            <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
-                <module>
-                    <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:packetcable:packetcable-provider:impl">
-                        prefix:packetcable-provider-impl
-                    </type>
-                    <name>packetcable-provider-default-impl</name>
-                    <broker>
-                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-broker-osgi-registry</type>
-                        <name>binding-osgi-broker</name>
-                    </broker>
-                </module>
-            </modules>
-
-            <services xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
-                <service>
-                    <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:packetcable:packetcable-provider">
-                        prefix:packetcable-provider
-                    </type>
-                    <instance>
-                        <name>packetcable-provider-default</name>
-                        <provider>/modules/module[type='packetcable-provider-impl'][name='packetcable-provider-default-impl']</provider>
-                    </instance>
-                </service>
-            </services>
-        </data>
-    </configuration>
-</snapshot>
diff --git a/packetcable-consumer/pom.xml b/packetcable-consumer/pom.xml
deleted file mode 100644 (file)
index 90f140c..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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.opendaylight.packetcable</groupId>
-               <artifactId>packetcable</artifactId>
-               <version>1.3.0-SNAPSHOT</version>
-       </parent>
-       <artifactId>packetcable-consumer</artifactId>
-       <packaging>bundle</packaging>
-
-       <properties>
-               <sal-binding-api.version>1.3.0-SNAPSHOT</sal-binding-api.version>
-       </properties>
-
-       <dependencies>
-               <dependency>
-                       <groupId>${project.groupId}</groupId>
-                       <artifactId>packetcable-model</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>${project.groupId}</groupId>
-                       <artifactId>packetcable-driver</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.controller</groupId>
-                       <artifactId>config-api</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.controller</groupId>
-                       <artifactId>sal-common-util</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.controller</groupId>
-                       <artifactId>sal-binding-api</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.controller</groupId>
-                       <artifactId>sal-binding-config</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.osgi</groupId>
-                       <artifactId>org.osgi.core</artifactId>
-               </dependency>
-       </dependencies>
-
-       <build>
-               <plugins>
-                       <plugin>
-                               <artifactId>maven-checkstyle-plugin</artifactId>
-                               <configuration>
-                                       <skip>true</skip>
-                               </configuration>
-                       </plugin>
-                       <plugin>
-                               <groupId>org.apache.felix</groupId>
-                               <artifactId>maven-bundle-plugin</artifactId>
-                       </plugin>
-                       <plugin>
-                               <groupId>org.opendaylight.yangtools</groupId>
-                               <artifactId>yang-maven-plugin</artifactId>
-                               <executions>
-                                       <execution>
-                                               <id>config</id>
-                                               <goals>
-                                                       <goal>generate-sources</goal>
-                                               </goals>
-                                               <configuration>
-                                                       <codeGenerators>
-                                                               <generator>
-                                                                       <codeGeneratorClass>org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator</codeGeneratorClass>
-                                                                       <outputBaseDir>${jmxGeneratorPath}</outputBaseDir>
-                                                                       <additionalConfiguration>
-                                                                               <namespaceToPackage1>urn:opendaylight:params:xml:ns:yang:controller==org.opendaylight.controller.config.yang</namespaceToPackage1>
-                                                                       </additionalConfiguration>
-                                                               </generator>
-                                                               <generator>
-                                                                       <codeGeneratorClass>org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl</codeGeneratorClass>
-                                                                       <outputBaseDir>${salGeneratorPath}</outputBaseDir>
-                                                               </generator>
-                                                       </codeGenerators>
-                                                       <inspectDependencies>true</inspectDependencies>
-                                               </configuration>
-                                       </execution>
-                               </executions>
-                       </plugin>
-
-               </plugins>
-       </build>
-       <scm>
-               <connection>scm:git:ssh://git.opendaylight.org:29418/controller.git</connection>
-               <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
-               <tag>HEAD</tag>
-               <url>https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL</url>
-       </scm>
-</project>
diff --git a/packetcable-consumer/src/main/java/org/opendaylight/controller/config/yang/config/pcmm_service/impl/PcmmServiceModule.java b/packetcable-consumer/src/main/java/org/opendaylight/controller/config/yang/config/pcmm_service/impl/PcmmServiceModule.java
deleted file mode 100644 (file)
index eb5dcbd..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2015, CableLabs
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.controller.config.yang.config.pcmm_service.impl;
-
-public class PcmmServiceModule
-               extends
-               org.opendaylight.controller.config.yang.config.pcmm_service.impl.AbstractPcmmServiceModule {
-       public PcmmServiceModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
-               super(identifier, dependencyResolver);
-       }
-
-       public PcmmServiceModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.pcmm_service.impl.PcmmServiceModule oldModule, java.lang.AutoCloseable oldInstance) {
-               super(identifier, dependencyResolver, oldModule, oldInstance);
-       }
-
-       @Override
-       public void customValidation() {
-               // add custom validation form module attributes here.
-       }
-
-       @Override
-       public java.lang.AutoCloseable createInstance() {
-               throw new UnsupportedOperationException("Implement me");
-       }
-
-}
diff --git a/packetcable-consumer/src/main/java/org/opendaylight/controller/config/yang/config/pcmm_service/impl/PcmmServiceModuleFactory.java b/packetcable-consumer/src/main/java/org/opendaylight/controller/config/yang/config/pcmm_service/impl/PcmmServiceModuleFactory.java
deleted file mode 100644 (file)
index 7c6662c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
-* Generated file
-*
-* Generated from: yang module name: pcmm-service-impl yang module local name: pcmm-service-impl
-* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
-* Generated at: Mon Aug 11 19:34:09 CEST 2014
-*
-* Do not modify this file unless it is present under src/main directory
-*/
-package org.opendaylight.controller.config.yang.config.pcmm_service.impl;
-public class PcmmServiceModuleFactory extends org.opendaylight.controller.config.yang.config.pcmm_service.impl.AbstractPcmmServiceModuleFactory {
-
-}
diff --git a/packetcable-consumer/src/main/java/org/opendaylight/controller/org/pcmm/api/PcmmService.java b/packetcable-consumer/src/main/java/org/opendaylight/controller/org/pcmm/api/PcmmService.java
deleted file mode 100644 (file)
index 76ea067..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.opendaylight.controller.org.pcmm.api;
-
-import org.opendaylight.controller.config.yang.config.pcmm_service.impl.PcmmServiceRuntimeMXBean;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.node.cmts.broker.rev140909.PacketcableBrokerListener;
-
-
-public interface PcmmService extends PcmmServiceRuntimeMXBean, PacketcableBrokerListener {
-
-}
diff --git a/packetcable-consumer/src/main/yang/pcmm-service-impl.yang b/packetcable-consumer/src/main/yang/pcmm-service-impl.yang
deleted file mode 100644 (file)
index a72d598..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-module pcmm-service-impl {
-
-    yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:controller:config:pcmm-service:impl";
-    prefix "pcmm-service-impl";
-
-    import config { prefix config; revision-date 2013-04-05; }
-    import rpc-context { prefix rpcx; revision-date 2013-06-17; }    
-    import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
-
-    description
-        "This module contains the base YANG definitions for
-        pcmm-service impl implementation.";
-
-    revision "2014-08-10" {
-        description
-            "Initial revision.";
-    }
-
-    // This is the definition of pcmm service interface identity.
-    identity pcmm-service {
-        base "config:service-type";
-        config:java-class "org.opendaylight.controller.org.pcmm.api.PcmmService";
-    }
-
-    // This is the definition of pcmm service implementation module identity. 
-    identity pcmm-service-impl {
-            base config:module-type;
-            config:provided-service pcmm-service;
-            config:java-name-prefix PcmmService;
-    }
-
-    augment "/config:modules/config:module/config:configuration" {
-        case pcmm-service-impl {
-            when "/config:modules/config:module/config:type = 'pcmm-service-impl'";
-
-            container rpc-registry {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-rpc-registry;
-                    }
-                }
-            }
-
-            container notification-service {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-notification-service;
-                    }
-                }
-            }
-        }
-    }
-    
-    augment "/config:modules/config:module/config:state" {
-        case pcmm-service-impl {
-            when "/config:modules/config:module/config:type = 'pcmm-service-impl'";
-            
-            rpcx:rpc-context-instance "send-gate-set-rpc";
-            rpcx:rpc-context-instance "send-gate-delete-rpc";
-            rpcx:rpc-context-instance "send-gate-info-rpc";
-            rpcx:rpc-context-instance "send-gate-synchronize-rpc";
-              
-        }
-    }
-
-    identity send-gate-set-rpc;
-
-    rpc send-gate-set {
-        description
-          "Shortcut JMX call to send a gate-set message for testing.";
-          
-        input {
-            uses rpcx:rpc-context-ref {
-                refine context-instance {
-                    rpcx:rpc-context-instance send-gate-set-rpc;
-                }
-            }
-        }
-        
-        output {
-            leaf result {
-                type boolean;
-            }
-        }
-    }
-    
-      identity send-gate-delete-rpc;
-
-    rpc send-gate-delete {
-        description
-          "Shortcut JMX call to send a gate-delete message for testing.";
-          
-        input {
-            uses rpcx:rpc-context-ref {
-                refine context-instance {
-                    rpcx:rpc-context-instance send-gate-delete-rpc;
-                }
-            }
-        }
-        
-        output {
-            leaf result {
-                type boolean;
-            }
-        }
-    }
-    
-     identity send-gate-synchronize-rpc;
-
-    rpc send-gate-synchronize {
-        description
-          "Shortcut JMX call to send a gate-Synchronize message for testing.";
-          
-        input {
-            uses rpcx:rpc-context-ref {
-                refine context-instance {
-                    rpcx:rpc-context-instance send-gate-synchronize-rpc;
-                }
-            }
-        }
-        
-        output {
-            leaf result {
-                type boolean;
-            }
-        }
-    }
-    
-          identity send-gate-info-rpc;
-
-    rpc send-gate-info {
-        description
-          "Shortcut JMX call to send a gate-info message for testing.";
-          
-        input {
-            uses rpcx:rpc-context-ref {
-                refine context-instance {
-                    rpcx:rpc-context-instance send-gate-info-rpc;
-                }
-            }
-        }
-        
-        output {
-            leaf result {
-                type boolean;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/packetcable-karaf/pom.xml b/packetcable-karaf/pom.xml
deleted file mode 100644 (file)
index ed499c9..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<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">\r
-  <modelVersion>4.0.0</modelVersion>\r
-  <parent>\r
-    <artifactId>packetcable</artifactId>\r
-    <groupId>org.opendaylight.packetcable</groupId>\r
-    <version>1.3.0-SNAPSHOT</version>\r
-  </parent>\r
-  <artifactId>packetcable-karaf</artifactId>\r
-  <packaging>pom</packaging>\r
-  <prerequisites>\r
-    <maven>3.0</maven>\r
-  </prerequisites>\r
-  <properties>\r
-    <!-- Optional TODO: Move these properties to your parent pom and possibly\r
-            DependencyManagement section of your parent pom -->\r
-    <branding.version>1.2.0-SNAPSHOT</branding.version>\r
-    <karaf.resources.version>1.6.0-SNAPSHOT</karaf.resources.version>\r
-  </properties>\r
-\r
-  <dependencies>\r
-    <!-- Basic Karaf dependencies -->\r
-    <dependency>\r
-      <groupId>org.apache.karaf.features</groupId>\r
-      <artifactId>framework</artifactId>\r
-      <version>${karaf.version}</version>\r
-      <type>kar</type>\r
-    </dependency>\r
-    <dependency>\r
-      <groupId>org.apache.karaf.features</groupId>\r
-      <artifactId>standard</artifactId>\r
-      <version>${karaf.version}</version>\r
-      <classifier>features</classifier>\r
-      <type>xml</type>\r
-      <scope>runtime</scope>\r
-    </dependency>\r
-\r
-    <!-- ODL Branding -->\r
-    <dependency>\r
-      <groupId>org.opendaylight.controller</groupId>\r
-      <artifactId>karaf.branding</artifactId>\r
-      <version>${branding.version}</version>\r
-      <scope>compile</scope>\r
-    </dependency>\r
-\r
-    <!-- ODL Resources needed for karaf -->\r
-    <dependency>\r
-      <groupId>org.opendaylight.controller</groupId>\r
-      <artifactId>opendaylight-karaf-resources</artifactId>\r
-      <version>${karaf.resources.version}</version>\r
-    </dependency>\r
-\r
-    <!-- Project local feautures -->\r
-    <!--\r
-      Necessary TODO put your features here.\r
-\r
-      Note: they will need to be <type>xml</xml>\r
-      and <classifier>features</classifier>.\r
-\r
-      Note: they must be <scope>runtime</scope>\r
-\r
-      Note: usually you would only need to depend\r
-      on your own feature file here for your local distro,\r
-      and possible the features-mdsal for odl-restconf\r
-      (although, strange situations do exist :) )\r
-\r
-      Example:\r
-      <dependency>\r
-        <groupId>org.opendaylight.controller</groupId>\r
-        <artifactId>features-mdsal</artifactId>\r
-        <classifier>features</classifier>\r
-        <type>xml</type>\r
-        <scope>runtime</scope>\r
-      </dependency>\r
-      <dependency>\r
-        <groupId>org.opendaylight.openflowplugin</groupId>\r
-        <artifactId>features-openflowplugin</artifactId>\r
-        <version>0.2.0-SNAPSHOT</version>\r
-        <classifier>features</classifier>\r
-        <type>xml</type>\r
-        <scope>runtime</scope>\r
-      </dependency>\r
-    -->\r
-    <dependency>\r
-        <groupId>org.opendaylight.controller</groupId>\r
-        <artifactId>features-mdsal</artifactId>\r
-        <classifier>features</classifier>\r
-        <version>${project.version}</version>\r
-        <type>xml</type>\r
-        <scope>runtime</scope>\r
-      </dependency>\r
-      <dependency>\r
-        <groupId>org.opendaylight.packetcable</groupId>\r
-        <artifactId>features-packetcable</artifactId>\r
-        <classifier>features</classifier>\r
-        <version>${project.version}</version>\r
-        <type>xml</type>\r
-        <scope>runtime</scope>\r
-      </dependency>\r
-  </dependencies>\r
-\r
-  <build>\r
-    <pluginManagement>\r
-      <plugins>\r
-        <plugin>\r
-          <groupId>org.eclipse.m2e</groupId>\r
-          <artifactId>lifecycle-mapping</artifactId>\r
-          <version>1.0.0</version>\r
-          <configuration>\r
-            <lifecycleMappingMetadata>\r
-              <pluginExecutions>\r
-                <pluginExecution>\r
-                  <pluginExecutionFilter>\r
-                    <groupId>org.apache.felix</groupId>\r
-                    <artifactId>maven-bundle-plugin</artifactId>\r
-                    <versionRange>[0,)</versionRange>\r
-                    <goals>\r
-                      <goal>cleanVersions</goal>\r
-                    </goals>\r
-                  </pluginExecutionFilter>\r
-                  <action>\r
-                    <ignore></ignore>\r
-                  </action>\r
-                </pluginExecution>\r
-                <pluginExecution>\r
-                  <pluginExecutionFilter>\r
-                    <groupId>org.apache.maven.plugins</groupId>\r
-                    <artifactId>maven-dependency-plugin</artifactId>\r
-                    <versionRange>[0,)</versionRange>\r
-                    <goals>\r
-                      <goal>copy</goal>\r
-                      <goal>unpack</goal>\r
-                    </goals>\r
-                  </pluginExecutionFilter>\r
-                  <action>\r
-                    <ignore></ignore>\r
-                  </action>\r
-                </pluginExecution>\r
-                <pluginExecution>\r
-                  <pluginExecutionFilter>\r
-                    <groupId>org.apache.karaf.tooling</groupId>\r
-                    <artifactId>karaf-maven-plugin</artifactId>\r
-                    <versionRange>[0,)</versionRange>\r
-                    <goals>\r
-                      <goal>commands-generate-help</goal>\r
-                    </goals>\r
-                  </pluginExecutionFilter>\r
-                  <action>\r
-                    <ignore></ignore>\r
-                  </action>\r
-                </pluginExecution>\r
-                <pluginExecution>\r
-                  <pluginExecutionFilter>\r
-                    <groupId>org.fusesource.scalate</groupId>\r
-                    <artifactId>maven-scalate-plugin</artifactId>\r
-                    <versionRange>[0,)</versionRange>\r
-                    <goals>\r
-                      <goal>sitegen</goal>\r
-                    </goals>\r
-                  </pluginExecutionFilter>\r
-                  <action>\r
-                    <ignore></ignore>\r
-                  </action>\r
-                </pluginExecution>\r
-                <pluginExecution>\r
-                  <pluginExecutionFilter>\r
-                    <groupId>org.apache.servicemix.tooling</groupId>\r
-                    <artifactId>depends-maven-plugin</artifactId>\r
-                    <versionRange>[0,)</versionRange>\r
-                    <goals>\r
-                      <goal>generate-depends-file</goal>\r
-                    </goals>\r
-                  </pluginExecutionFilter>\r
-                  <action>\r
-                    <ignore></ignore>\r
-                  </action>\r
-                </pluginExecution>\r
-              </pluginExecutions>\r
-            </lifecycleMappingMetadata>\r
-          </configuration>\r
-        </plugin>\r
-      </plugins>\r
-    </pluginManagement>\r
-    <plugins>\r
-      <plugin>\r
-        <groupId>org.apache.karaf.tooling</groupId>\r
-        <artifactId>karaf-maven-plugin</artifactId>\r
-        <extensions>true</extensions>\r
-        <configuration>\r
-          <bootFeatures>\r
-            <feature>standard</feature>\r
-            <feature>odl-mdsal-apidocs</feature>\r
-            <feature>odl-packetcable-provider</feature>\r
-            <!--\r
-              Optional TODO: Add entries here for the features you want in your local distro\r
-              Note: odl-restconf is a separate feature from odl-mdsal-broker.  If you want\r
-              restconf, you need to list it here explicitely.\r
-              Examples:\r
-              <feature>odl-openflowplugin-flow-services</feature>\r
-              <feature>odl-restconf</feature>\r
-            -->\r
-            <!-- Final TODO: Remove TODO Comments ;) -->\r
-          </bootFeatures>\r
-        </configuration>\r
-        <executions>\r
-          <execution>\r
-            <id>process-resources</id>\r
-            <goals>\r
-              <goal>install-kars</goal>\r
-            </goals>\r
-            <phase>process-resources</phase>\r
-          </execution>\r
-          <execution>\r
-            <id>package</id>\r
-            <goals>\r
-              <goal>instance-create-archive</goal>\r
-            </goals>\r
-          </execution>\r
-        </executions>\r
-      </plugin>\r
-      <plugin>\r
-        <groupId>org.apache.maven.plugins</groupId>\r
-        <artifactId>maven-dependency-plugin</artifactId>\r
-        <version>2.6</version>\r
-        <executions>\r
-          <execution>\r
-            <id>copy</id>\r
-            <goals>\r
-              <goal>copy</goal>\r
-            </goals>\r
-            <phase>generate-resources</phase>\r
-            <configuration>\r
-              <artifactItems>\r
-                <artifactItem>\r
-                  <groupId>org.opendaylight.controller</groupId>\r
-                  <artifactId>karaf.branding</artifactId>\r
-                  <version>${karaf.branding.version}</version>\r
-                  <outputDirectory>target/assembly/lib</outputDirectory>\r
-                  <destFileName>karaf.branding-${branding.version}.jar</destFileName>\r
-                </artifactItem>\r
-              </artifactItems>\r
-            </configuration>\r
-          </execution>\r
-          <execution>\r
-            <id>unpack-karaf-resources</id>\r
-            <goals>\r
-              <goal>unpack-dependencies</goal>\r
-            </goals>\r
-            <phase>prepare-package</phase>\r
-            <configuration>\r
-             <outputDirectory>${project.build.directory}/assembly</outputDirectory>\r
-             <groupId>org.opendaylight.controller</groupId>\r
-             <includeArtifactIds>opendaylight-karaf-resources</includeArtifactIds>\r
-             <excludes>META-INF\/**</excludes>\r
-             <excludeTransitive>true</excludeTransitive>\r
-             <ignorePermissions>false</ignorePermissions>\r
-            </configuration>\r
-          </execution>\r
-        </executions>\r
-      </plugin>\r
-      <plugin>\r
-        <groupId>org.apache.maven.plugins</groupId>\r
-        <artifactId>maven-antrun-plugin</artifactId>\r
-        <executions>\r
-            <execution>\r
-                <phase>prepare-package</phase>\r
-                <goals>\r
-                    <goal>run</goal>\r
-                </goals>\r
-                <configuration>\r
-                  <tasks>\r
-                    <chmod perm="755">\r
-                        <fileset dir="${project.build.directory}/assembly/bin">\r
-                          <include name="karaf" />\r
-                          <include name="instance" />\r
-                          <include name="start" />\r
-                          <include name="stop" />\r
-                          <include name="status" />\r
-                          <include name="client" />\r
-                          <include name="shell" />\r
-                        </fileset>\r
-                    </chmod>\r
-                  </tasks>\r
-                </configuration>\r
-            </execution>\r
-        </executions>\r
-      </plugin>\r
-    </plugins>\r
-  </build>\r
-  <scm>\r
-    <connection>scm:git:ssh://git.opendaylight.org:29418/packetcable.git</connection>\r
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/packetcable.git</developerConnection>\r
-    <tag>HEAD</tag>\r
-    <url>https://git.opendaylight.org/gerrit/gitweb?p=packetcable.git;a=summary</url>\r
-  </scm>\r
-</project>\r
diff --git a/packetcable-model/pom.xml b/packetcable-model/pom.xml
deleted file mode 100644 (file)
index 96ac70f..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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.opendaylight.packetcable</groupId>
-               <artifactId>packetcable</artifactId>
-               <version>1.3.0-SNAPSHOT</version>
-       </parent>
-       <artifactId>packetcable-model</artifactId>
-       <packaging>bundle</packaging>
-       <dependencies>
-               <dependency>
-                       <groupId>org.opendaylight.yangtools.model</groupId>
-                       <artifactId>ietf-inet-types</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.yangtools.model</groupId>
-                       <artifactId>ietf-yang-types</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.yangtools</groupId>
-                       <artifactId>yang-binding</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.yangtools</groupId>
-                       <artifactId>yang-common</artifactId>
-               </dependency>
-       </dependencies>
-
-       <build>
-               <plugins>
-                       <plugin>
-                               <groupId>org.opendaylight.yangtools</groupId>
-                               <artifactId>yang-maven-plugin</artifactId>
-                               <dependencies>
-                                       <dependency>
-                                               <groupId>org.opendaylight.yangtools</groupId>
-                                               <artifactId>maven-sal-api-gen-plugin</artifactId>
-                                               <version>${yangtools.version}</version>
-                                               <type>jar</type>
-                                       </dependency>
-                               </dependencies>
-                               <executions>
-                                       <execution>
-                                               <goals>
-                                                       <goal>generate-sources</goal>
-                                               </goals>
-                                               <configuration>
-                                                       <yangFilesRootDir>src/main/yang</yangFilesRootDir>
-                                                       <codeGenerators>
-                                                               <generator>
-                                                                       <codeGeneratorClass>org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl</codeGeneratorClass>
-                                                                       <outputBaseDir>${salGeneratorPath}</outputBaseDir>
-                                                               </generator>
-                                                       </codeGenerators>
-                                                       <inspectDependencies>true</inspectDependencies>
-                                               </configuration>
-                                       </execution>
-                               </executions>
-                       </plugin>
-               </plugins>
-       </build>
-       <scm>
-               <connection>scm:git:ssh://git.opendaylight.org:29418/controller.git</connection>
-               <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
-               <tag>HEAD</tag>
-               <url>https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL</url>
-       </scm>
-</project>
diff --git a/packetcable-model/src/main/yang/packetcable-broker.yang b/packetcable-model/src/main/yang/packetcable-broker.yang
deleted file mode 100644 (file)
index 8d8ba15..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-module packetcable-broker {
-    namespace "urn:opendaylight:node:cmts:broker";
-    prefix "broker";
-
-    import opendaylight-inventory { prefix inv; revision-date "2013-08-19"; }
-    import packetcable-cmts { prefix cmts; revision-date "2014-09-09"; }
-    import flow-capable-transaction { prefix tr; revision-date "2015-03-04";}
-
-    description "This module contains a set of notifications to communicate with
-        the driver ";
-    organization "OpenDaylight Project";
-
-    revision 2014-09-09 {
-        description "Initial revision of packetcable broker";
-    }
-
-    notification cmts-added {
-        uses tr:transaction-metadata;
-        uses cmts:cmts-node-attributes;
-        uses tr:transaction-aware;
-    }
-
-    notification cmts-updated {
-        uses tr:transaction-metadata;
-        uses cmts:cmts-node-attributes;
-        uses tr:transaction-aware;
-    }
-
-    notification cmts-removed {
-        uses tr:transaction-metadata;
-        uses cmts:cmts-node-attributes;
-        uses tr:transaction-aware;
-    }
-}
diff --git a/packetcable-model/src/main/yang/packetcable-cmts.yang b/packetcable-model/src/main/yang/packetcable-cmts.yang
deleted file mode 100644 (file)
index 14de02d..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-module packetcable-cmts
-{
-    namespace "urn:opendaylight:node:cmts";
-    prefix "cmts";
-
-    import ietf-yang-types     { prefix yang; }
-    import ietf-inet-types     { prefix inet; }
-    import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
-    import yang-ext {prefix ext; revision-date "2013-07-09";}
-//    import ietf-interfaces   { prefix if;   }
-//    import ietf-snmp         { prefix snmp; }
-//    import ietf-reverse-ssh          { prefix rssh; }
-
-    description "This module contains a collection of CMTS definitions";
-    organization "OpenDaylight Project";
-
-    revision 2014-09-09 {
-        description "Initial revision of packetcable cmts";
-    }        
-
-    grouping cmts-node-attributes {
-        description "A PCMM capable CMTS and other available configuration resources.";
-        
-        leaf address {
-            type inet:ip-address;
-            description "IP Address of CMTS";
-        }
-        
-        leaf port {
-            type inet:port-number;
-            description "TCP port number to connect";
-            default 3918;
-        }
-    }
-    
-    augment "/inv:nodes/inv:node" {
-        ext:augment-identifier "cmts-capable-node";
-        container cmts-node {
-            uses cmts-node-attributes ;
-        }
-    }
-}
diff --git a/packetcable-model/src/main/yang/packetcable-match-types.yang b/packetcable-model/src/main/yang/packetcable-match-types.yang
deleted file mode 100644 (file)
index dcc2274..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-module packetcable-match-types
-{
-    namespace "urn:opendaylight:packetcable:match:types";
-    prefix "packet-cable-match";
-
-    import yang-ext {prefix ext; revision-date "2013-07-09";}
-    import flow-node-inventory {prefix fni; revision-date "2013-08-19"; }
-    import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
-    import sal-flow {prefix sal-flow;revision-date "2013-08-19";}
-    import packet-processing {prefix sal-packet;revision-date "2013-07-09";}
-    import ietf-inet-types {prefix inet; revision-date "2010-09-24";}
-    import ietf-yang-types {prefix yang; revision-date "2010-09-24";}
-    import opendaylight-flow-types {prefix flow;revision-date "2013-10-26";}
-    import opendaylight-flow-statistics {prefix odl-flow-stats;revision-date "2013-08-19";}
-
-    revision 2014-09-09 {
-        description "Initial revision of packetcable match types";
-    }        
-    
-
-    grouping "udp-match-ranges-attributes" {
-        container upd-match-ranges {
-            leaf udp-source-port-start {
-                description "UDP source port start.";
-                type inet:port-number;
-            }
-            leaf udp-source-port-end {
-                description "UDP source port end.";
-                type inet:port-number;
-            }
-            leaf udp-destination-port-start {
-                description "UDP destination port start.";
-                type inet:port-number;
-            }
-            leaf udp-destination-port-end {
-                description "UDP destination port end.";
-                type inet:port-number;
-            }
-        }
-    }
-
-    
-    //  MATCH augmentations for udp-match-range
-    // RPCS
-    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:match" {
-        ext:augment-identifier "udp-match-ranges-rpc-add-flow";
-        uses udp-match-ranges-attributes;
-    }
-    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:match" {
-        ext:augment-identifier "udp-match-ranges-rpc-remove-flow";
-        uses udp-match-ranges-attributes;
-    }
-    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:match" {
-        ext:augment-identifier "udp-match-ranges-rpc-update-flow-original";
-        uses udp-match-ranges-attributes;
-    }
-    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:match" {
-        ext:augment-identifier "udp-match-ranges-rpc-update-flow-updated";
-        uses udp-match-ranges-attributes;
-    }
-
-    // DATA
-    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:match" {
-        ext:augment-identifier "udp-match-ranges-nodes-node-table-flow";
-        uses udp-match-ranges-attributes;
-    }
-
-    // NOTIFICATIONS
-    augment "/sal-flow:switch-flow-removed/sal-flow:match" {
-        ext:augment-identifier "udp-match-ranges-notif-switch-flow-removed";
-        uses udp-match-ranges-attributes;
-    }
-    augment "/sal-packet:packet-received/sal-packet:match" {
-        ext:augment-identifier "udp-match-ranges-notif-packet-in";
-        uses udp-match-ranges-attributes;
-    }
-    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:match" {
-        ext:augment-identifier "udp-match-ranges-notif-update-flow-stats";
-        uses udp-match-ranges-attributes;
-    }
-    
-    grouping "tcp-match-ranges-attributes" {
-        container tcp-match-ranges {
-            leaf tcp-source-port-start {
-                description "TCP source port start.";
-                type inet:port-number;
-            }
-            leaf tcp-source-port-end {
-                description "TCP source port end.";
-                type inet:port-number;
-            }
-            leaf tcp-destination-port-start {
-                description "TCP destination port start.";
-                type inet:port-number;
-            }
-            leaf tcp-destination-port-end {
-                description "TCP destination port end.";
-                type inet:port-number;
-            }
-        }
-    }
-    
-//  MATCH augmentations for tcp-match-range
-// RPCS
-    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:match" {
-        ext:augment-identifier "tcp-match-ranges-rpc-add-flow";
-        uses tcp-match-ranges-attributes;
-    }
-    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:match" {
-        ext:augment-identifier "tcp-match-ranges-rpc-remove-flow";
-        uses tcp-match-ranges-attributes;
-    }
-    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:match" {
-        ext:augment-identifier "tcp-match-ranges-rpc-update-flow-original";
-        uses tcp-match-ranges-attributes;
-    }
-    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:match" {
-        ext:augment-identifier "tcp-match-ranges-rpc-update-flow-updated";
-        uses tcp-match-ranges-attributes;
-    }
-
-// DATA
-    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:match" {
-        ext:augment-identifier "tcp-match-ranges-nodes-node-table-flow";
-        uses tcp-match-ranges-attributes;
-    }
-
-// NOTIFICATIONS
-    augment "/sal-flow:switch-flow-removed/sal-flow:match" {
-        ext:augment-identifier "tcp-match-ranges-notif-switch-flow-removed";
-        uses tcp-match-ranges-attributes;
-    }
-    augment "/sal-packet:packet-received/sal-packet:match" {
-        ext:augment-identifier "tcp-match-ranges-notif-packet-in";
-        uses tcp-match-ranges-attributes;
-    }
-    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:match" {
-        ext:augment-identifier "tcp-match-ranges-notif-update-flow-stats";
-        uses tcp-match-ranges-attributes;
-    }
-
-    grouping subscriber-id {
-        leaf subscriber-id {
-            type inet:ip-address;
-            description "Subscriber Id";
-        }
-    }
-    
-//  MATCH augmentations for susbcriber-id
-// RPCS
-    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:match" {
-        ext:augment-identifier "subscriber-id-rpc-add-flow";
-        uses subscriber-id;
-    }
-    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:match" {
-        ext:augment-identifier "subscriber-id-rpc-remove-flow";
-        uses subscriber-id;
-    }
-    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:match" {
-        ext:augment-identifier "subscriber-id-rpc-update-flow-original";
-        uses subscriber-id;
-    }
-    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:match" {
-        ext:augment-identifier "subscriber-id-rpc-update-flow-updated";
-        uses subscriber-id;
-    }
-
-// DATA
-    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:match" {
-        ext:augment-identifier "subscriber-id-nodes-node-table-flow";
-        uses subscriber-id;
-    }
-
-// NOTIFICATIONS
-    augment "/sal-flow:switch-flow-removed/sal-flow:match" {
-        ext:augment-identifier "subscriber-id-notif-switch-flow-removed";
-        uses subscriber-id;
-    }
-    augment "/sal-packet:packet-received/sal-packet:match" {
-        ext:augment-identifier "subscriber-id-notif-packet-in";
-        uses subscriber-id;
-    }
-    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:match" {
-        ext:augment-identifier "subscriber-id-notif-update-flow-stats";
-        uses subscriber-id;
-    }
-    
-}
diff --git a/packetcable-model/src/main/yang/packetcable-traffic-profile.yang b/packetcable-model/src/main/yang/packetcable-traffic-profile.yang
deleted file mode 100644 (file)
index 2d7ff37..0000000
+++ /dev/null
@@ -1,869 +0,0 @@
-module packetcable-traffic-profile
-{
-    namespace "urn:opendaylight:flow:traffic-profile";
-    prefix traffic;
-    
-    import flow-node-inventory {prefix fni; revision-date 2013-08-19; }
-    import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
-    import sal-flow {prefix sal-flow;revision-date "2013-08-19";}
-    import sal-group {prefix sal-group;revision-date "2013-09-18";}
-    import packet-processing {prefix sal-packet;revision-date "2013-07-09";}
-    import opendaylight-flow-statistics {prefix odl-flow-stats;revision-date "2013-08-19";}
-    import opendaylight-group-statistics {prefix odl-group-stats;revision-date "2013-11-11";}
-
-    organization "OpenDaylight Project";
-    contact "TBD";
-    
-    description
-         "This module contains a collection of groupings and
-         data definition statements related to the configuration
-         of Traffic Profiles.";
-
-    revision 2014-09-08 {
-        description "Initial revision of packetcable traffic profile";
-    }        
-
-
-    typedef tp-reference {
-    type instance-identifier;
-    }
-
-
-    typedef float {
-       type binary {
-         length "0..4";
-       }
-    description
-    "32-bit IEEE floating point number" ;
-    }
-
-    typedef traffic-profile-type {
-        description
-            "
-        There are four different ways to express a traffic profile. The traffic profile can be expressed via a FlowSpec, a DOCSIS Service Class Name, DOCSIS-specific parameters or Upstream Drop. The four methods are distinguished via a different S-Type value in the Traffic Profile (S-Num = 7) object. S-Type of 1 indicates the object contains a traffic profile specified in RSVP FlowSpec format. S-Type of 2 indicates the object contains a traffic profile specified in DOCSIS Service Class Name format. S-Type of 3 - 8 indicates the object contains a traffic profile that is specified via DOCSIS-specific parameters. S-Type of 9 indicates the object contains a traffic profile specified in an Upstream Drop format.
-
-        All Traffic Profiles utilize 'replace' semantics, meaning that the envelopes present in this Traffic Profile replace all existing envelopes associated with the Gate and corresponding Service Flow. Thus, all traffic parameters associated with a given Gate MUST be included in every message that includes a Traffic Profile. The traffic profile format (RSVP FlowSpec, DOCSIS Service Class Name, DOCSIS-specific parameters, Upstream Drop) for a specific envelope MUST remain constant and unchanged throughout the life of the gate.
-
-        All Traffic Profiles share a common field known as the Envelope Field. This field is a bit field that signals the envelope types (i.e., Authorized, Reserved, and Committed) that are present in the object. A value of 1 in a given bit field indicates that the envelope type is present in the Traffic Profile.
-
-    • Bit 0: Authorized Envelope
-
-    • Bit 1: Reserved Envelope
-
-    • Bit 2: Committed Envelope
-
-        Thus a bit pattern of 001 (or 0x01) indicates the presence of only the Authorized Envelope, while a value of 111 (or 0x7) indicates the presence of all three envelopes. Only the following values are legal: 001, 011 and 111; the Envelope Field MUST be set to one of these three legal values. Further limitations on the value of the Envelope Field may be a function of the current state of the Gate. Refer to Section 6.2 for more information.
-
-        For the Traffic Profile formats that allow multiple sets of envelope parameters, the mapping of envelope parameter sets follows one of the following methods:
-
-        • If all of the envelope types that are indicated in the envelope field share a common set of envelope parameters, then the PDP SHOULD ensure that exactly one set of envelope parameters are present in the traffic profile. This allows for the most efficient transmission and processing of the Traffic Profile throughout the system.
-
-        • Otherwise, the PDP MUST ensure that exactly one set of envelope parameters is included for each of the envelope types that are indicated in the envelope field. The proper order of the envelope parameter sets is shown in the appropriate message diagram in Sections 6.4.2.1 and 6.4.2.3 thru 6.4.2.7.8.
-
-        While all Traffic Profiles end up providing QoS on the access network, it is important to note several subtle differences between the signaling mechanisms. As noted previously, the conversion of a FlowSpec (S-Type 1) to DOCSIS parameters by the CMTS is generally less efficient than specifying the DOCSIS parameters themselves. That said, specifying DOCSIS parameters explicitly (S-Types 3-7) is not a panacea either, the QoS MIB only logs QoS information about named Service Flows in its ServiceFlowLogTable. Thus, only flows created via S-Type 2 will have logged QoS information in this table. For some this may not be a major issue, but for debugging and just general operational tracking this subtlety should be taken into account by operators and Application Manager vendors evaluating the Traffic Profile signaling alternatives provided by this specification.
-    ";
-
-    type enumeration {
-        enum flowspec { value 0; }
-        enum docsis-service-class-name { value 1; }
-        enum docsis-specific-parameterization { value 2; }
-        enum upstream-drop { value 3; }
-
-        enum best-effort { value 4; }
-        enum unsolicited-grant-service { value 5; }
-        enum unsolicited-grant-service-with-activity-detection { value 6; }
-        enum non-real-time-polling-service { value 7; }
-        enum real-time-polling-service { value 8; }
-        enum downstream-service { value 9; }
-    }
-
-    }
-
-    grouping flowspec-envelope-attributes {
-    description "
-The values r, b, p, m, M, R, and s are defined and described 
-
-TSpec Parameters:
-• Bucket Depth (b), bytes
-• Bucket Rate (r), bytes/second
-• Maximum Datagram Size (M), bytes
-• Minimum Policed Unit (m), bytes
-• Peak Rate (p), bytes/second RSpec Parameters:
-• Reserved Rate (R), bytes/second
-• Slack Term (S), microseconds
-The parameter mapping, roughly approximated, involves the following associations for DOCSIS upstream BE (Best-Effort) and downstream Controlled Load Service Flows. The actual mapping procedure would involve normalizing these parameters to account for Layer 2 and Layer 3 header considerations.
-• TSpec Bucket Depth (b) ~= DOCSIS Maximum Traffic Burst
-• TSpec Maximum Datagram Size (M) ~= <not required by DOCSIS >
-• TSpec Minimum Policed Unit (m) ~= DOCSIS Assumed Minimum Reserved Rate Packet Size
-• TSpec Bucket Rate (r) ~= DOCSIS Minimum Reserved Rate
-• TSpec Peak Rate (p) ~= DOCSIS Maximum Sustained Rate and, for DOCSIS 3.0 only, DOCSIS Downstream Peak Traffic Rate
-For downstream Guaranteed service flows, the RSpec parameters are added to provide latency and reservation guarantees.
-• TSpec Bucket Depth (b) ~= DOCSIS Maximum Traffic Burst
-• TSpec Maximum Datagram Size (M) ~= <not required by DOCSIS >
-• TSpec Minimum Policed Unit (m) ~= DOCSIS Assumed Minimum Reserved Rate Packet Size
-• TSpec Bucket Rate (r) ~= DOCSIS Minimum Reserved Rate and DOCSIS Maximum Sustained Rate
-• TSpec Peak Rate (p) ~= For DOCSIS 3.0 only, DOCSIS Downstream Peak Traffic Rate
-• RSpec Reserved Rate (R) ~= <not required by DOCSIS>
-• RSpec Slack Term ~= DOCSIS Downstream Latency
-The parameter mapping, roughly approximated, involves the following associations for DOCSIS UGS Service Flows.
-• TSpec Bucket Depth (b) = TSpec Maximum Datagram Size (M) = TSpec Minimum Policed Unit (m) ~= DOCSIS Unsolicited Grant Size
-• TSpec Bucket Rate (r) = TSpec Peak Rate (p) = RSpec Reserved Rate (R) ~= used to calculate Nominal Grant Interval
-• RSpec Slack Term ~= DOCSIS Tolerated Grant Jitter
-Similarly, the following associations apply for DOCSIS Real-Time Polling Service Flows.
-• TSpec Bucket Depth (b) ~= DOCSIS Maximum Traffic Burst
-• TSpec Maximum Datagram Size (M) ~= <not required by DOCSIS >
-• TSpec Bucket Rate (r) ~= DOCSIS Maximum Sustained Rate and DOCSIS Minimum Reserved Traffic Rate
-• RSpec Reserved Rate (R) ~= used to calculate the Polling Interval
-• RSpec Slack Term ~= Tolerated Polling Jitter
-
-Token Bucket Rate [r] (encoded as IEEE floating point) 
-0x461C4000 (10,000 Bps) 
-Token Bucket Size [b] (encoded as IEEE floating point) 
-0x43480000 (200 bytes) 
-Peak Data Rate [p] (encoded as IEEE floating point) 
-0x461C4000 (10,000 Bps) 
-Minimum Policed Unit [m] 
-0x000000C8 (200 bytes) 
-Maximum Packet Size [M] 
-0x000000C8 (200 bytes) 
-Rate [R] (encoded as IEEE floating point) 
-0x461C4000 (10,000 Bps) 
-Slack Term [S] 
-0x00000320 (800 μs) 
-    ";
-
-
-    leaf token-bucket-rate {
-        type float;
-        description "[r] (IEEE floating point number 
-        
-        default 10000.0;
-        ";
-    }
-    leaf token-bucket-size {
-        type float;
-        description "[p] IEEE floating point number";
-        default 200;
-    }
-    leaf peak-data-rate {
-        type float;
-        description "[m] IEEE floating point number
-
-        default 10000.0;
-
-        ";
-    }
-    leaf minimum-policed-unit {
-        type uint32;
-        description "[m] (integer)";
-        default 200;
-    }
-
-    leaf maximum-packet-size {
-        type uint32;
-        description "[M] (integer)";
-        default 200;
-    }
-    leaf rate {
-        type uint32;
-        description "[R] (IEEE floating point number)";
-        default 10000;
-    }
-    leaf slack-term {
-        type uint32;
-        description "[S] (integer)";
-        default 800;
-    }
-    }
-
-    grouping default-envelope-attributes {
-    leaf traffic-priority {
-        type uint8;
-        description 
-            "   
-            Traffic Priority is a 1-byte unsigned integer field specifying the relative priority assigned to the Service Flow in comparison with other flows. This field is fully defined in section C.2.2.5.1 of [1]. A default Traffic Priority of 0 SHOULD be used if a specific Traffic Priority value is not required.
-        ";
-        default 0;
-    }
-    leaf reserved0 {
-        type uint8;
-        default 0;
-    }
-    leaf reserved1 {
-        type uint16;
-        default 0;
-    }
-    leaf request-transmission-policy {
-        type uint32;
-        description "
-            Request/Transmission Policy is a 4-byte bit field as defined in section C.2.2.6.3 of [1]. A default Request/Transmission policy of 0 SHOULD be used if a specific Request/Transmission Policy value is not required.
-        ";
-        default 0;
-    }
-    leaf maximum-sustained-traffic-rate {
-        type uint32;
-        description "
-            Maximum Sustained Traffic Rate is a 4-byte unsigned integer field specifying the rate parameter, in bits/sec, for [1]. A value of 0 indicates that no explicitly-enforced Maximum Sustained Rate is requested. A default Maximum Sustained Traffic Rate of 0 SHOULD be used if a specific Maximum Sustained Traffic Rate is not required.
-
-        ";
-        default 0;
-    }
-    leaf maximum-traffic-burst {
-        type uint32;
-        description "
-            Maximum Traffic Burst is a 4-byte unsigned integer field specifying the token bucket size, in bytes, for a token- bucket-based rate limit for this Service Flow. This field is fully defined in section C.2.2.5.3 of [1]. A default Maximum Traffic Burst of 3044 bytes SHOULD be used if a specific Maximum Traffic Burst is not required. The value of this parameter has no effect unless a non-zero value has been provided for the Maximum Sustained Traffic Rate parameter.
-        ";
-        default 3044;
-    }
-    leaf minimum-reserved-traffic-rate {
-        type uint16;
-        description 
-            "
-            Minimum Reserved Traffic Rate is a 4-byte unsigned integer field specifying the minimum rate, in bits/sec, reserved for this Service Flow. This field is fully defined in section C.2.2.5.4 of [1]. A default Minimum Reserved Traffic Rate of 0 SHOULD be used if a specific Minimum Reserved Traffic Rate is not required.        
-
-";
-        default 0;
-    }
-    leaf assumed-minimum-reserved-traffic-rate-packet-size {
-        type uint16;
-        description 
-        "
-            Assumed Minimum Reserved Traffic Rate Packet Size is a 2-byte unsigned integer field specifying an assumed minimum packet size, in bytes, for which the Minimum Reserved Traffic Rate will be provided for this flow. This field is fully defined in section C.2.2.5.5 of [1]. A default Assumed Minimum Reserved Traffic Rate Packet Size of 0 SHOULD be used if a specific Assumed Minimum Reserved Traffic Rate Packet size is not required. Upon receipt of a value of 0 the CMTS MUST utilize its implementation-specific default size for this parameter, not 0 bytes.        
-    
-";
-        default 0;
-    }
-    leaf maximum-concatenated-burst {
-        type uint16;
-        description 
-        "
-            Maximum Concatenated Burst is a 2-byte unsigned integer specifying the maximum concatenated burst (in bytes) which a Service Flow is allowed. This field is fully defined in section C.2.2.6.1 of [1]. A value of 0 means there is no limit. A default Maximum Concatenated Burst of 1522 bytes SHOULD be used if a specific Maximum Concatenated Burst is not required.
-";
-        default 1522;
-    }
-
-    leaf upstream-peak-traffic-rate {
-        type uint32;
-        description 
-        "
-Upstream Peak Traffic Rate is a 4-byte unsigned integer specifying the Peak traffic rate (in bits per second) which a 
-Service Flow is allowed. This field is fully defined in section C.2.2.5.10.1 of [1]. 
-        ";
-        default 0;
-    }
-
-    leaf required-attribute-mask {
-        type uint32;
-        description 
-        "
-            Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
-
-";
-        default 0;
-    }
-    leaf forbidden-attribute-mask {
-        type uint32;
-        description 
-        "
-            Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
-";
-        default 0;
-    }
-    leaf attribute-aggregation-rule-mask {
-        type uint32;
-        description 
-        "
-            Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
-";
-        default 0;
-    }
-    leaf minimum-buffer {
-        type uint32;
-        description 
-        "
-Minimum Buffer is a 4-byte unsigned integer parameter that defines a lower limit for the size of the buffer that is to be provided for a service flow. This field is fully defined in section C.2.2.5.11.3 of [1]. If this parameter is omitted, the Minimum Buffer defaults to a value of 0, which indicates that there is no lower limit.
-        ";
-        default 0;
-    }
-    leaf target-buffer {
-        type uint32;
-        description 
-        "
-Target Buffer is a 4-byte unsigned integer parameter that defines a desired value for the size of the buffer that is to be provided for a service flow. This field is fully defined in section C.2.2.5.11.4 of [1]. If this parameter is omitted or set to a value of 0, the device selects any buffer size within the range of the Minimum and Maximum Buffers, via a vendor-specific algorithm.
-
-        ";
-        default 0;
-    }
-    leaf maximum-buffer {
-        type uint32;
-        description 
-        "
-Maximum Buffer is a 4-byte unsigned integer parameter that defines an upper limit for the size of the buffer that is to be provided for a service flow. This field is fully defined in section C.2.2.5.11.5 of [1]. If this parameter is omitted, the Maximum Buffer defaults to a value of no limit.
-        ";
-        default 0;
-    }
-    }
-
-
-    grouping ugs-envelope-attributes {
-    leaf request-transmission-policy {
-        type uint32;
-        description "
-        Request/Transmission Policy is a 4-byte bit field as defined in section C.2.2.6.3 of [1]. Note: for this Service Flow Scheduling Type there is no default value for Request/Transmission Policy and all values (including 0) have meaning in DOCSIS. Bit 9 in the Request/Transmission Policy enables/disables the use of segment headers. A segment header is 8 bytes in length. It MUST be accounted for in the Unsolicited Grant Size parameter when segment header usage is enabled. The CMTS MUST ignore Bit 9 in the Request/Transmission Policy if the cable modem associated with the service flow is operating in DOCSIS 1.1 or 2.0 mode. For more information on segment headers and their use please see section 6.3 of [1].
-        ";
-        default 0;
-    }
-    leaf unsolicited-grant-size {
-        type uint16;
-        description "
-        Unsolicited Grant Size is a 2-byte unsigned integer field specifying the grant size (in bytes) as defined in section C.2.2.6.6 of [1]. There is no default value of Unsolicited Grant Size.
-        ";
-        default 0;
-    }
-    leaf grants-interval {
-        type uint8;
-        description "
-    Grants per Interval is a 1-byte unsigned integer field specifying the number of grants per Nominal Grant Interval as defined in section C.2.2.6.9 of [1]. There is no default value of Grants per Interval, but a value of 1 is recommended.    
-        ";
-        default 1;
-    }
-    leaf reserved {
-        type uint8;
-        description "
-        ";
-        default 0;
-    }
-    leaf nominal-grant-interval {
-        type uint32;
-        description "
-            Nominal Grant Interval is a 4-byte unsigned integer field specifying the nominal time between successive data grant opportunities for this Service Flow (in units of microseconds) as defined in section C.2.2.6.7 of [1].
-        
-        ";
-        default 0;
-    }
-    leaf tolerated-grant-jitter {
-        type uint32;
-        description "
-Tolerated Grant Jitter is a 4-byte unsigned integer field specifying the maximum amount of time that transmission opportunities may be delayed from the nominal periodic schedule (in units of microseconds) as defined in section C.2.2.6.8 of [1]. The minimum allowed value is 800. If the CMTS receives a Gate-Set message with Tolerated Grant Jitter less than 800, the CMTS MUST reply with a Gate-Set-Err message with a PacketCable Error-Code of 'Invalid Field Value in Object'. There is no default value of Nominal Grant Interval. There is no default value for Tolerated Grant Jitter.
-        ";
-        default 0;
-    }
-    leaf required-attribute-mask {
-        type uint32;
-        description "
-Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section, a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
-        ";
-        default 0;
-    }
-    leaf forbidden-attribute-mask {
-        type uint32;
-        description "
-Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section, a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
-        ";
-        default 0;
-    }
-    leaf attribute-aggregation-rule-mask {
-        type uint32;
-        description "
-Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section, a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
-        ";
-        default 0;
-    }
-    
-    }
-
-
-    grouping us-envelope-attributes {
-    leaf us-traffic-priority {
-        type uint8;
-        description "
-Traffic Priority is a 1-byte unsigned integer field specifying the relative priority assigned to the Service Flow in comparison with other flows. This field is fully defined in section C.2.2.5.1 of [1]. A default Traffic Priority of 0 SHOULD be used if a specific Traffic Priority value is not required.
-
-        ";
-        default 0;
-    }
-    leaf downstream-resequencing {
-        type uint32;
-        description "
-DOCSIS 3.0 service flows. This field is fully defined in section C.2.2.7.3 of [1]. The CMTS MUST honor the requested Downstream Resequencing operation for all Gate requests. It is possible that the CMTS may receive conflicting downstream resequencing direction by the AM for Multicast Gate requests (e.g., multiple Multicast Gate requests for the same Multicast destination but with different downstream resequencing operation). In such a case the CMTS MUST either honor the Multicast Gate request or reject it with error code 35 (Multicast Gate Downstream Resequencing mismatch). For a Multicast Gate, the CMTS MUST ignore the Downstream Resequencing object if the cable modem associated with the service flow is operating in MDF disabled mode. The CMTS MUST ignore the Downstream Resequencing object if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. DOCSIS 3.0 introduced the concept of downstream channel bonding where the CMTS can simultaneously transmit on multiple channels. Downstream channels may not all have the same amount of latency such that two packets scheduled simultaneously by the CMTS may not arrive simultaneously at the cable modem. The CMTS can insert sequence numbers in each DOCSIS packet header to allow the cable modem to re- order out of sequence packets. The cable modem will hold higher numbered packets while waiting for lower numbered packets to arrive. The maximum wait time is 18ms. Applications that can tolerate lost packets or applications that cannot tolerate packet latency of up to 18ms can disable the use of sequence numbers by setting the Downstream Resequencing value to 1.
-        ";
-        default 0;
-    }
-    leaf reserved0{
-        type uint32;
-        description "
-
-        ";
-        default 0;
-    }
-    leaf maximum-sustained-traffic-rate {
-        type uint32;
-        description "
-Maximum Sustained Traffic Rate is a 4-byte unsigned integer field specifying the rate parameter, in bits/sec, for a token-bucket-based rate limit for this Service Flow. This field is fully defined in section C.2.2.5.2 of [1]. A value of 0 indicates that no explicitly-enforced Maximum Sustained Rate is requested. A default Maximum Sustained Traffic Rate of 0 SHOULD be used if a specific Maximum Sustained Traffic Rate is not required.
-
-        ";
-        default 0;
-    }
-    leaf maximum-traffic-burst {
-        type uint32;
-        description "
-Maximum Traffic Burst is a 4-byte unsigned integer field specifying the token bucket size, in bytes, for a token- bucket-based rate limit for this Service Flow. This field is fully defined in section C.2.2.5.3 of [1]. A default Maximum Traffic Burst of 3044 bytes SHOULD be used if a specific Maximum Traffic Burst is not required. The value of this parameter has no effect unless a non-zero value has been provided for the Maximum Sustained Traffic Rate parameter.
-
-        ";
-        default 3044;
-    }
-    leaf minimum-reserved-traffic-rate {
-        type uint32;
-        description "
-Minimum Reserved Traffic Rate is a 4-byte unsigned integer field specifying the minimum rate, in bits/sec, reserved for this Service Flow. This field is fully defined in section C.2.2.5.4 of [1]. A default Minimum Reserved Traffic Rate of 0 SHOULD be used if a specific Minimum Reserved Traffic Rate is not required.
-
-        ";
-        default 0;
-    }
-    leaf assumed-minimum-reserved-traffic-rate-packet-size {
-        type uint32;
-        description "
-Assumed Minimum Reserved Traffic Rate Packet Size is a 2-byte unsigned integer field specifying an assumed minimum packet size, in bytes, for which the Minimum Reserved Traffic Rate will be provided for this flow. This field is fully defined in section C.2.2.5.5 of [1]. A default Assumed Minimum Reserved Traffic Rate Packet Size of 0 SHOULD be used if a specific Assumed Minimum Reserved Traffic Rate Packet size is not required. Upon receipt of a value of 0 the CMTS MUST utilize its implementation-specific default size for this parameter, not 0 bytes.
-
-
-        ";
-        default 0;
-    }
-    leaf reserved1{
-        type uint32;
-        description "
-
-        ";
-        default 0;
-    }
-    leaf maximum-downstream-latency {
-        type uint32;
-        description "
-Maximum Downstream Latency is a 4-byte unsigned integer field specifying the maximum latency between reception of a packet on the CMTS's NSI and the forwarding of the packet on its RF interface as defined in section C.2.2.7.1 of [1]. A default Maximum Downstream Latency of 0 SHOULD be used if a specific Maximum Downstream Latency is not required. Upon receipt of a value of 0, the CMTS MUST NOT include this parameter in its DOCSIS signaling for this Service Flow.
-
-
-        ";
-        default 0;
-    }
-    leaf downstream-peak-traffic-rate {
-        type uint32;
-        description "
-Downstream Peak Traffic Rate is a 4-byte unsigned integer field, specifying the rate parameter P of a token-bucket- based peak rate limiter for packets of a downstream service flow. Configuring this peak rate parameter permits an operator to define a Maximum Burst value for the Downstream Maximum Sustained Rate much larger than a maximum packet size, but still limit the burst of packets consecutively transmitted for a service flow. The Downstream Peak Traffic Rate parameter is fully defined in section C.2.2.7.2 of [1]. The CMTS MUST NOT include this parameter in its DOCSIS signaling for this service flow if a value of 0 is supplied, if the cable modem for which the Gate applies is not provisioned in DOCSIS 3.0 mode, or if the CMTS does not support the enforcement of this value.
-
-        ";
-        default 0;
-    }
-    leaf required-attribute-mask {
-        type uint32;
-        description "
-Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
-
-        ";
-        default 0;
-    }
-    leaf forbidden-attribute-mask {
-        type uint32;
-        description "
-Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
-
-        ";
-        default 0;
-    }
-    leaf attribute-aggregation-rule-mask {
-        type uint32;
-        description "
-Attribute Masks define a specific set of attributes associated with a DOCSIS 3.0 service flow. The CMTS MUST ignore the bonded bit in the Required and Forbidden Attribute Mask objects if the cable modem associated with the service flow is operating in pre-3.0 DOCSIS mode. The Required Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by requiring certain attributes. This field is fully defined in section C.2.2.3.6 of [1]. The Forbidden Attribute Mask limits the set of channels and bonding groups to which the CMTS assigns the service flow by forbidding certain attributes. This field is fully defined in section C.2.2.3.7 of [1]. The CMTS is free to assign the service flow to any channel that satisfies the traffic profile if no channel is available that satisfies the Required Attribute Mask and Forbidden Attribute Mask for the service flow. The Attribute Aggregation Rule Mask provides guidance to the CMTS as to how it might use the attribute masks of individual channels to construct a dynamic bonding group for this service flow. This field is fully described in section 'Service Flow Attribute Aggregation Rule Mask' of [1]. As described in that section a default Attribute Aggregation Rule Mask of 0 SHOULD be used if specific Attribute Aggregation Rules are not required.
-
-        ";
-        default 0;
-    }
-    }
-
-
-    grouping traffic-profile-flowspec-attributes {
-    container f-authorized-envelope {
-        uses flowspec-envelope-attributes;
-                description "mandatory";
-    }
-    container f-reserved-envelope {
-        uses flowspec-envelope-attributes;
-                description "optional";
-    }
-    container f-committed-envelope {
-        uses flowspec-envelope-attributes;
-                description "optional";
-    }
-    }
-
-
-    grouping traffic-profile-docsis-service-class-name-attributes {
-    leaf service-class-name {
-        type string;
-                description 
-        "
-        xxx - length 2 to 128?
-
-        The Service Class Name is MUST be 2-16 bytes of null-terminated ASCII string. 
-        (Refer to section C.2.2.3.4 of [1]).  This name MUST be padded with null bytes 
-        to align on a 4-byte boundary.
-        ";
-    }
-    }
-
-
-    grouping traffic-profile-best-effort-attributes {
-    container be-authorized-envelope {
-        uses default-envelope-attributes;
-                description "mandatory";
-    }
-    container be-reserved-envelope {
-        uses default-envelope-attributes;
-                description "optional";
-    }
-    container be-committed-envelope {
-        uses default-envelope-attributes;
-                description "optional";
-    }
-    }
-
-    grouping traffic-profile-non-real-time-polling-service-attributes {
-    container nrtp-authorized-envelope {
-        uses default-envelope-attributes;
-                description "mandatory";
-    }
-    container nrtp-reserved-envelope {
-        uses default-envelope-attributes;
-                description "optional";
-    }
-    container nrtp-committed-envelope {
-        uses default-envelope-attributes;
-                description "optional";
-    }
-    }
-
-
-    grouping traffic-profile-real-time-polling-service-attributes {
-    container rtp-authorized-envelope {
-        uses default-envelope-attributes;
-                description "mandatory";
-    }
-    container rtp-reserved-envelope {
-        uses default-envelope-attributes;
-                description "optional";
-    }
-    container rtp-committed-envelope {
-        uses default-envelope-attributes;
-                description "optional";
-    }
-    }
-
-    grouping traffic-profile-unsolicited-grant-service-attributes {
-    container ugs-authorized-envelope {
-        uses ugs-envelope-attributes;
-                description "mandatory";
-    }
-    container ugs-reserved-envelope {
-        uses ugs-envelope-attributes;
-                description "optional";
-    }
-    container ugs-committed-envelope {
-        uses ugs-envelope-attributes;
-                description "optional";
-    }
-    }
-
-    grouping traffic-profile-unsolicited-grant-service-with-activity-detection-attributes {
-    container usga-authorized-envelope {
-        uses ugs-envelope-attributes;
-                description "mandatory";
-    }
-    container usga-reserved-envelope {
-        uses ugs-envelope-attributes;
-                description "optional";
-    }
-    container usga-committed-envelope {
-        uses ugs-envelope-attributes;
-                description "optional";
-    }
-    }
-
-
-    grouping traffic-profile-downstream-service-attributes {
-    container ds-authorized-envelope {
-        uses us-envelope-attributes;
-                description "mandatory";
-    }
-    container ds-reserved-envelope {
-        uses us-envelope-attributes;
-                description "optional";
-    }
-    container ds-committed-envelope {
-        uses us-envelope-attributes;
-                description "optional";
-    }
-    }
-
-
-    grouping traffic-profile-upstream-drop-attributes {
-    }
-
-    grouping traffic-profile-docsis-specific-parameterization-attributes {
-    }
-
-
-    
-    grouping traffic-profile-grouping-attributes {
-        leaf tp-type {
-                type traffic-profile-type;
-                default  best-effort;
-                description "This attribute contains the type of upstream flow scheduling type.";
-        }
-    }
-
-//  ACTION augmentations
-
-    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-
-    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-
-    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-
-    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
-        case "flowspec-case" { container flowspec {uses traffic-profile-flowspec-attributes; } }
-        case "docsis-service-class-name-case" { container docsis-service-class-name {uses traffic-profile-docsis-service-class-name-attributes; } }
-        case "docsis-specific-parameterization-case" { container docsis-specific-parameterization {uses traffic-profile-docsis-specific-parameterization-attributes; }}
-        case "upstream-drop-case" { container upstream-drop {uses traffic-profile-upstream-drop-attributes; } }
-        case "best-effort-case" { container best-effort {uses traffic-profile-best-effort-attributes; } }
-        case "unsolicited-grant-service-case" { container unsolicited-grant-service {uses traffic-profile-unsolicited-grant-service-attributes; } }
-        case "unsolicited-grant-service-with-activity-detection-case" { container unsolicited-grant-service-with-activity-detection {uses traffic-profile-unsolicited-grant-service-with-activity-detection-attributes; } }
-        case "non-real-time-polling-service-case" { container non-real-time-polling-service {uses traffic-profile-non-real-time-polling-service-attributes; } }
-        case "real-time-polling-service-case" { container real-time-polling-service {uses traffic-profile-real-time-polling-service-attributes; } }
-        case "downstream-service-case" { container downstream-service {uses traffic-profile-downstream-service-attributes; }}
-    }
-
-//    grouping taffic-profile-default-singleton-grouping {
-//        grouping flowspec { uses traffic-profile-flowspec; }
-//        grouping docsis-service-class-name { uses traffic-profile-docsis-service-class-name; }
-//        grouping docsis-specific-parameterization { uses traffic-profile-docsis-specific-parameterization; }
-//        grouping upstream-drop { uses traffic-profile-upstream-drop; }
-//        grouping best-effort { uses traffic-profile-best-effort; }
-//        grouping unsolicited-grant-service { uses traffic-profile-unsolicited-grant-service; }
-//        grouping unsolicited-grant-service-with-activity-detection { uses traffic-profile-unsolicited-grant-service-with-activity-detection; }
-//        grouping non-real-time-polling-service { uses traffic-profile-non-real-time-polling-service; }
-//        grouping real-time-polling-service { uses traffic-profile-real-time-polling-service; }
-//        grouping downstream-service { uses traffic-profile-downstream-service; }
-//    }
-}
diff --git a/packetcable-provider/pom.xml b/packetcable-provider/pom.xml
deleted file mode 100644 (file)
index 0fac0d1..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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.opendaylight.packetcable</groupId>
-        <artifactId>packetcable</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
-    </parent>
-    <artifactId>packetcable-provider</artifactId>
-    <packaging>bundle</packaging>
-
-    <properties>
-        <sal-binding-api.version>1.3.0-SNAPSHOT</sal-binding-api.version>
-        <powermock.version>1.5.1</powermock.version>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>packetcable-driver</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>packetcable-model</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.yangtools.model</groupId>
-            <artifactId>ietf-inet-types</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.yangtools.model</groupId>
-            <artifactId>ietf-yang-types</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>config-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>sal-binding-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>sal-binding-config</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>sal-common-util</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-core</artifactId>
-            <version>${powermock.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-module-junit4</artifactId>
-            <version>${powermock.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-mockito</artifactId>
-            <version>${powermock.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.11</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                <configuration>
-                    <skip>true</skip>
-                </configuration>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <configuration>
-                    <instructions>
-                        <Export-Package>org.opendaylight.controller.config.yang.toaster_provider,</Export-Package>
-                        <Import-Package>*</Import-Package>
-                    </instructions>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.opendaylight.yangtools</groupId>
-                <artifactId>yang-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>config</id>
-                        <goals>
-                            <goal>generate-sources</goal>
-                        </goals>
-                        <configuration>
-                            <codeGenerators>
-                                <generator>
-                                    <codeGeneratorClass>org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator</codeGeneratorClass>
-                                    <outputBaseDir>${jmxGeneratorPath}</outputBaseDir>
-                                    <additionalConfiguration>
-                                        <namespaceToPackage1>urn:opendaylight:params:xml:ns:yang:controller==org.opendaylight.controller.config.yang</namespaceToPackage1>
-                                    </additionalConfiguration>
-                                </generator>
-                                <generator>
-                                    <codeGeneratorClass>org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl</codeGeneratorClass>
-                                    <outputBaseDir>${salGeneratorPath}</outputBaseDir>
-                                </generator>
-                            </codeGenerators>
-                            <inspectDependencies>true</inspectDependencies>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-    <scm>
-        <connection>scm:git:ssh://git.opendaylight.org:29418/controller.git</connection>
-        <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
-        <tag>HEAD</tag>
-        <url>https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL</url>
-    </scm>
-</project>
diff --git a/packetcable-provider/src/main/java/org/opendaylight/controller/packetcable/provider/OpenDaylightPacketCableProviderService.java b/packetcable-provider/src/main/java/org/opendaylight/controller/packetcable/provider/OpenDaylightPacketCableProviderService.java
deleted file mode 100644 (file)
index 755dbab..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.opendaylight.controller.packetcable.provider;
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.TrafficProfileBestEffortAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.TrafficProfileDocsisServiceClassNameAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.TrafficProfileFlowspecAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match;
-import org.pcmm.gates.IClassifier;
-import org.pcmm.gates.ITrafficProfile;
-
-public interface OpenDaylightPacketCableProviderService {
-
-       public ITrafficProfile buildTrafficProfile(TrafficProfileBestEffortAttributes bestEffort);
-
-       public ITrafficProfile buildTrafficProfile(TrafficProfileFlowspecAttributes flowSpec);
-
-       public ITrafficProfile buildTrafficProfile(TrafficProfileDocsisServiceClassNameAttributes docsis);
-
-       public IClassifier buildClassifier(Match sid);
-
-}
diff --git a/packetcable-provider/src/main/java/org/opendaylight/controller/packetcable/provider/OpendaylightPacketcableProvider.java b/packetcable-provider/src/main/java/org/opendaylight/controller/packetcable/provider/OpendaylightPacketcableProvider.java
deleted file mode 100644 (file)
index 638f58d..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-package org.opendaylight.controller.packetcable.provider;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.Lists;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
-import org.opendaylight.controller.packetcable.provider.processors.PCMMDataProcessor;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RoutedRpcRegistration;
-import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
-import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.flow.update.OriginalFlow;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.flow.update.UpdatedFlow;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.TrafficProfileBestEffortAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.TrafficProfileDocsisServiceClassNameAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.TrafficProfileFlowspecAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.BestEffortCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.DocsisServiceClassNameCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.FlowspecCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeContextRef;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.node.cmts.broker.rev140909.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.node.cmts.rev140909.CmtsCapableNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.node.cmts.rev140909.nodes.node.CmtsNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.packetcable.match.types.rev140909.UdpMatchRangesRpcRemoveFlow;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.packetcable.match.types.rev140909.UdpMatchRangesRpcUpdateFlowOriginal;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.packetcable.match.types.rev140909.UdpMatchRangesRpcUpdateFlowUpdated;
-import org.opendaylight.yangtools.concepts.CompositeObjectRegistration;
-import org.opendaylight.yangtools.concepts.CompositeObjectRegistration.CompositeObjectRegistrationBuilder;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
-import org.pcmm.gates.IClassifier;
-import org.pcmm.gates.ITrafficProfile;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.atomic.AtomicReference;
-
-@SuppressWarnings("unused")
-public class OpendaylightPacketcableProvider implements DataChangeListener,
-               SalFlowService, OpenDaylightPacketCableProviderService,
-               BindingAwareProvider, AutoCloseable {
-
-       private static final Logger logger = LoggerFactory.getLogger(OpendaylightPacketcableProvider.class);
-       private NotificationProviderService notificationProvider;
-       private DataBroker dataProvider;
-
-       private final ExecutorService executor;
-
-       // The following holds the Future for the current make toast task.
-       // This is used to cancel the current toast.
-       private final AtomicReference<Future<?>> currentConnectionsTasks = new AtomicReference<>();
-       private ProviderContext providerContext;
-       private NotificationProviderService notificationService;
-       private DataBroker dataBroker;
-       private ListenerRegistration<DataChangeListener> listenerRegistration;
-       private List<InstanceIdentifier<?>> cmtsInstances;
-       private PCMMDataProcessor pcmmDataProcessor;
-
-       public OpendaylightPacketcableProvider() {
-        logger.info("Instantiating");
-               executor = Executors.newCachedThreadPool();
-               cmtsInstances = Lists.newArrayList();
-               pcmmDataProcessor = new PCMMDataProcessor();
-       }
-
-       public void setNotificationProvider(final NotificationProviderService salService) {
-               this.notificationProvider = salService;
-       }
-
-       public void setDataProvider(final DataBroker salDataProvider) {
-               this.dataProvider = salDataProvider;
-       }
-
-       /**
-        * Implemented from the AutoCloseable interface.
-        */
-       @Override
-       public void close() throws ExecutionException, InterruptedException {
-        logger.info("Closing");
-               executor.shutdown();
-               if (dataProvider != null) {
-                       for (Iterator<InstanceIdentifier<?>> iter = cmtsInstances.iterator(); iter.hasNext();) {
-                               WriteTransaction tx = dataProvider.newWriteOnlyTransaction();
-                               tx.delete(LogicalDatastoreType.OPERATIONAL, iter.next());
-                               Futures.addCallback(tx.submit(), new FutureCallback<Void>() {
-                                       @Override
-                                       public void onSuccess(final Void result) {
-                                               logger.debug("Delete commit result: " + result);
-                                       }
-
-                                       @Override
-                                       public void onFailure(final Throwable t) {
-                                               logger.error("Delete operation failed", t);
-                                       }
-                               });
-                       }
-               }
-       }
-
-       /**
-        * Implemented from the DataChangeListener interface.
-        */
-       @Override
-       public void onDataChanged(final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
-               DataObject dataObject = change.getUpdatedSubtree();
-               logger.debug("OpendaylightPacketcableProvider.onDataChanged() :" + dataObject);
-       }
-
-       public void notifyConsumerOnCmtsAdd(CmtsNode input, TransactionId transactionId) {
-               CmtsAdded cmtsRemoved = new CmtsAddedBuilder().setAddress(input.getAddress()).setPort(input.getPort()).setTransactionId(transactionId).build();
-               notificationProvider.publish(cmtsRemoved);
-       }
-
-       public void notifyConsumerOnCmtsRemove(CmtsNode input, TransactionId transactionId) {
-               CmtsRemoved cmtsRemoved = new CmtsRemovedBuilder().setAddress(input.getAddress()).setPort(input.getPort()).setTransactionId(transactionId).build();
-               notificationProvider.publish(cmtsRemoved);
-       }
-
-       public void notifyConsumerOnCmtsUpdate(CmtsNode input, TransactionId transactionId) {
-               CmtsUpdated cmtsRemoved = new CmtsUpdatedBuilder().setAddress(input.getAddress()).setPort(input.getPort()).setTransactionId(transactionId).build();
-               notificationProvider.publish(cmtsRemoved);
-       }
-
-       @Override
-       public Future<RpcResult<AddFlowOutput>> addFlow(AddFlowInput input) {
-               Match match = input.getMatch();
-               CmtsNode cmts = getCmtsNode(input);
-               if (cmts != null)
-                       cmtsInstances.add(input.getNode().getValue());
-               IClassifier classifier = buildClassifier(match);
-               ITrafficProfile trafficProfie = null;
-               for (Instruction i : input.getInstructions().getInstruction()) {
-                       if (i.getInstruction() instanceof ApplyActionsCase) {
-                               ApplyActionsCase aac = (ApplyActionsCase) i.getInstruction();
-                               for (Action a : aac.getApplyActions().getAction()) {
-                                       if (a.getAction() instanceof FlowspecCase) {
-                                               // not implemented
-                                               // trafficProfie = buildTrafficProfile(((FlowspecCase)
-                                               // a.getAction()).getFlowspec());
-                                       } else if (a.getAction() instanceof BestEffortCase) {
-                                               trafficProfie = buildTrafficProfile(((BestEffortCase) a.getAction()).getBestEffort());
-                                               break;
-                                       } else if (a.getAction() instanceof DocsisServiceClassNameCase) {
-                                               trafficProfie = buildTrafficProfile(((DocsisServiceClassNameCase) a.getAction()).getDocsisServiceClassName());
-                                               break;
-                                       }
-                               }
-                       }
-               }
-               TransactionId transactionId = null;
-               notifyConsumerOnCmtsAdd(cmts, transactionId);
-               return Futures.immediateFuture(RpcResultBuilder.success(new AddFlowOutputBuilder().setTransactionId(transactionId).build()).build());
-       }
-
-       @Override
-       public ITrafficProfile buildTrafficProfile(TrafficProfileDocsisServiceClassNameAttributes docsis) {
-               return pcmmDataProcessor.process(docsis);
-       }
-
-       @Override
-       public ITrafficProfile buildTrafficProfile(TrafficProfileBestEffortAttributes bestEffort) {
-               return pcmmDataProcessor.process(bestEffort);
-       }
-
-       @Override
-       public ITrafficProfile buildTrafficProfile(TrafficProfileFlowspecAttributes flowSpec) {
-               return pcmmDataProcessor.process(flowSpec);
-       }
-
-       @Override
-       public IClassifier buildClassifier(Match match) {
-               return pcmmDataProcessor.process(match);
-       }
-
-       @Override
-       public Future<RpcResult<RemoveFlowOutput>> removeFlow(RemoveFlowInput input) {
-               UdpMatchRangesRpcRemoveFlow updRange = input.getMatch().getAugmentation(UdpMatchRangesRpcRemoveFlow.class);
-               notifyConsumerOnCmtsRemove(getCmtsNode(input), null);
-               return null;
-       }
-
-       @Override
-       public Future<RpcResult<UpdateFlowOutput>> updateFlow(UpdateFlowInput input) {
-               OriginalFlow foo = input.getOriginalFlow();
-               UdpMatchRangesRpcUpdateFlowOriginal bar = foo.getMatch().getAugmentation(UdpMatchRangesRpcUpdateFlowOriginal.class);
-               UpdatedFlow updated = input.getUpdatedFlow();
-               UdpMatchRangesRpcUpdateFlowUpdated updatedRange = updated.getMatch().getAugmentation(UdpMatchRangesRpcUpdateFlowUpdated.class);
-               notifyConsumerOnCmtsUpdate(getCmtsNode(input), null);
-               return null;
-       }
-
-       @SuppressWarnings("unchecked")
-       protected CmtsNode getCmtsNode(NodeContextRef input) {
-               NodeRef nodeRef = input.getNode();
-               InstanceIdentifier<Node> instanceIdentifier = (InstanceIdentifier<Node>) nodeRef.getValue();
-               ReadOnlyTransaction rtransaction = dataBroker.newReadOnlyTransaction();
-               CheckedFuture<Optional<Node>, ReadFailedException> value = rtransaction.read(LogicalDatastoreType.CONFIGURATION, instanceIdentifier);
-               rtransaction.close();
-               Optional<Node> opt = null;
-               try {
-                       opt = value.get();
-               } catch (Exception e) {
-                       logger.error(e.getMessage());
-                       return null;
-               }
-               Node node = opt.get();
-               CmtsCapableNode cmts = node.getAugmentation(CmtsCapableNode.class);
-               CmtsNode cmtsNode = cmts.getCmtsNode();
-               return cmtsNode;
-       }
-
-       @Override
-       public void onSessionInitiated(ProviderContext session) {
-        logger.info("Initiating session");
-               providerContext = session;
-               notificationService = session.getSALService(NotificationProviderService.class);
-               dataBroker = session.getSALService(DataBroker.class);
-               InstanceIdentifier<CmtsNode> listenTo = InstanceIdentifier.create(Nodes.class).child(Node.class).augmentation(CmtsCapableNode.class).child(CmtsNode.class);
-               listenerRegistration = dataBroker.registerDataChangeListener(LogicalDatastoreType.CONFIGURATION, listenTo, this, DataChangeScope.BASE);
-       }
-
-
-       public void onSessionAdded(/* Whatever you need per CmtsConnection */) {
-               CompositeObjectRegistrationBuilder<OpendaylightPacketcableProvider> builder = CompositeObjectRegistration.<OpendaylightPacketcableProvider> builderFor(this);
-               /*
-                * You will need a routedRpc registration per Cmts... I'm not doing the
-                * accounting of storing them here, but you will need to so you can
-                * close them when your provider is closed
-                */
-               RoutedRpcRegistration<SalFlowService> registration = providerContext.addRoutedRpcImplementation(SalFlowService.class, this);
-               /*
-                * You will need to get your identifier somewhere... this is your
-                * nodeId. I would recommend adoption a convention like
-                * "cmts:<ipaddress>" for CmtsCapableNodes
-                * registration.registerPath(NodeContext.class, getIdentifier());
-                */
-       }
-
-}
diff --git a/packetcable-provider/src/main/java/org/opendaylight/controller/packetcable/provider/processors/PCMMDataProcessor.java b/packetcable-provider/src/main/java/org/opendaylight/controller/packetcable/provider/processors/PCMMDataProcessor.java
deleted file mode 100644 (file)
index 924c650..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-/**
- * 
- */
-package org.opendaylight.controller.packetcable.provider.processors;
-
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.TrafficProfileBestEffortAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.TrafficProfileDocsisServiceClassNameAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.TrafficProfileFlowspecAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.traffic.profile.best.effort.attributes.BeAuthorizedEnvelope;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.traffic.profile.best.effort.attributes.BeCommittedEnvelope;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.traffic.profile.best.effort.attributes.BeReservedEnvelope;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.packetcable.match.types.rev140909.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.packetcable.match.types.rev140909.tcp.match.ranges.attributes.TcpMatchRanges;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.packetcable.match.types.rev140909.udp.match.ranges.attributes.UpdMatchRanges;
-import org.pcmm.gates.IClassifier;
-import org.pcmm.gates.IExtendedClassifier;
-import org.pcmm.gates.ITrafficProfile;
-import org.pcmm.gates.impl.BestEffortService;
-import org.pcmm.gates.impl.BestEffortService.BEEnvelop;
-import org.pcmm.gates.impl.DOCSISServiceClassNameTrafficProfile;
-import org.pcmm.gates.impl.ExtendedClassifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-/**
- * 
- * PacketCable data processor
- * 
- */
-public class PCMMDataProcessor {
-
-       private Logger logger = LoggerFactory.getLogger(PCMMDataProcessor.class);
-
-       public ITrafficProfile process(TrafficProfileBestEffortAttributes bestEffort) {
-               BestEffortService trafficProfile = new BestEffortService(BestEffortService.DEFAULT_ENVELOP);
-               getBEAuthorizedEnvelop(bestEffort, trafficProfile);
-               getBEReservedEnvelop(bestEffort, trafficProfile);
-               getBECommittedEnvelop(bestEffort, trafficProfile);
-               return trafficProfile;
-       }
-
-       
-       public ITrafficProfile process(TrafficProfileDocsisServiceClassNameAttributes docsis) {
-               DOCSISServiceClassNameTrafficProfile trafficProfile = new DOCSISServiceClassNameTrafficProfile();
-               trafficProfile.setServiceClassName(docsis.getServiceClassName());
-               return trafficProfile;
-       }
-
-       // TODO
-       public ITrafficProfile process(TrafficProfileFlowspecAttributes flowSpec) {
-               throw new UnsupportedOperationException("Not impelemnted yet");
-       }
-
-       public IClassifier process(Match match) {
-               ExtendedClassifier classifier = new ExtendedClassifier();
-//             classifier.setProtocol(IClassifier.Protocol.NONE);
-               getUdpMatchRangeValues(match.getAugmentation(UdpMatchRangesRpcAddFlow.class), classifier);
-               getTcpMatchRangesValues(match.getAugmentation(TcpMatchRangesRpcAddFlow.class), classifier);
-               SubscriberIdRpcAddFlow subId = match.getAugmentation(SubscriberIdRpcAddFlow.class);
-               Ipv6Address ipv6Address = subId.getSubscriberId().getIpv6Address();
-               if (ipv6Address != null)
-                       try {
-                               classifier.setDestinationIPAddress(InetAddress.getByName(ipv6Address.getValue()));
-                       } catch (UnknownHostException e) {
-                               logger.error(e.getMessage());
-                       }
-
-               Ipv4Address ipv4Address = subId.getSubscriberId().getIpv4Address();
-               if (ipv4Address != null)
-                       try {
-                               classifier.setDestinationIPAddress(InetAddress.getByName(ipv4Address.getValue()));
-                       } catch (UnknownHostException e) {
-                               logger.error(e.getMessage());
-                       }
-               return classifier;
-       }
-
-       private void getBECommittedEnvelop(TrafficProfileBestEffortAttributes bestEffort, BestEffortService trafficProfile) {
-               BEEnvelop committedEnvelop = trafficProfile.getCommittedEnvelop();
-               BeCommittedEnvelope beCommittedEnvelope = bestEffort.getBeCommittedEnvelope();
-               if (beCommittedEnvelope.getTrafficPriority() != null)
-                       committedEnvelop.setTrafficPriority(beCommittedEnvelope.getTrafficPriority().byteValue());
-               else
-                       committedEnvelop.setTrafficPriority(BestEffortService.DEFAULT_TRAFFIC_PRIORITY);
-               if (beCommittedEnvelope.getMaximumTrafficBurst() != null)
-                       committedEnvelop.setMaximumTrafficBurst(beCommittedEnvelope.getMaximumTrafficBurst().intValue());
-               else
-                       committedEnvelop.setMaximumTrafficBurst(BestEffortService.DEFAULT_MAX_TRAFFIC_BURST);
-               if (beCommittedEnvelope.getRequestTransmissionPolicy() != null)
-                       committedEnvelop.setRequestTransmissionPolicy(beCommittedEnvelope.getRequestTransmissionPolicy().intValue());
-               // else
-               // committedEnvelop.setRequestTransmissionPolicy(PCMMGlobalConfig.BETransmissionPolicy);
-               if (beCommittedEnvelope.getMaximumSustainedTrafficRate() != null)
-                       committedEnvelop.setMaximumSustainedTrafficRate(beCommittedEnvelope.getMaximumSustainedTrafficRate().intValue());
-               // else
-               // committedEnvelop.setMaximumSustainedTrafficRate(PCMMGlobalConfig.DefaultLowBestEffortTrafficRate);
-       }
-
-       private void getBEReservedEnvelop(TrafficProfileBestEffortAttributes bestEffort, BestEffortService trafficProfile) {
-               BEEnvelop reservedEnvelop = trafficProfile.getReservedEnvelop();
-               BeReservedEnvelope beReservedEnvelope = bestEffort.getBeReservedEnvelope();
-               if (beReservedEnvelope.getTrafficPriority() != null)
-                       reservedEnvelop.setTrafficPriority(beReservedEnvelope.getTrafficPriority().byteValue());
-               else
-                       reservedEnvelop.setTrafficPriority(BestEffortService.DEFAULT_TRAFFIC_PRIORITY);
-               if (beReservedEnvelope.getMaximumTrafficBurst() != null)
-                       reservedEnvelop.setMaximumTrafficBurst(beReservedEnvelope.getMaximumTrafficBurst().intValue());
-               else
-                       reservedEnvelop.setMaximumTrafficBurst(BestEffortService.DEFAULT_MAX_TRAFFIC_BURST);
-               if (beReservedEnvelope.getRequestTransmissionPolicy() != null)
-                       reservedEnvelop.setRequestTransmissionPolicy(beReservedEnvelope.getRequestTransmissionPolicy().intValue());
-               if (beReservedEnvelope.getMaximumSustainedTrafficRate() != null)
-                       reservedEnvelop.setMaximumSustainedTrafficRate(beReservedEnvelope.getMaximumSustainedTrafficRate().intValue());
-       }
-
-       private void getBEAuthorizedEnvelop(TrafficProfileBestEffortAttributes bestEffort, BestEffortService trafficProfile) {
-               BEEnvelop authorizedEnvelop = trafficProfile.getAuthorizedEnvelop();
-               BeAuthorizedEnvelope beAuthorizedEnvelope = bestEffort.getBeAuthorizedEnvelope();
-               if (beAuthorizedEnvelope.getTrafficPriority() != null)
-                       authorizedEnvelop.setTrafficPriority(beAuthorizedEnvelope.getTrafficPriority().byteValue());
-               else
-                       authorizedEnvelop.setTrafficPriority(BestEffortService.DEFAULT_TRAFFIC_PRIORITY);
-               if (beAuthorizedEnvelope.getMaximumTrafficBurst() != null)
-                       authorizedEnvelop.setMaximumTrafficBurst(beAuthorizedEnvelope.getMaximumTrafficBurst().intValue());
-               else
-                       authorizedEnvelop.setMaximumTrafficBurst(BestEffortService.DEFAULT_MAX_TRAFFIC_BURST);
-               if (beAuthorizedEnvelope.getRequestTransmissionPolicy() != null)
-                       authorizedEnvelop.setRequestTransmissionPolicy(beAuthorizedEnvelope.getRequestTransmissionPolicy().intValue());
-               if (beAuthorizedEnvelope.getMaximumSustainedTrafficRate() != null)
-                       authorizedEnvelop.setMaximumSustainedTrafficRate(beAuthorizedEnvelope.getMaximumSustainedTrafficRate().intValue());
-       }
-
-       private void getTcpMatchRangesValues(TcpMatchRangesAttributes tcpRange, IExtendedClassifier classifier) {
-               short srcPortStart, srcPortEnd, dstPortStart, dstPortEnd;
-               srcPortStart = srcPortEnd = dstPortStart = dstPortEnd = 0;
-               if (tcpRange != null) {
-//                     classifier.setProtocol(IClassifier.Protocol.TCP);
-                       TcpMatchRanges tcpMatchRanges = tcpRange.getTcpMatchRanges();
-                       PortNumber tcpDestinationPortStart = tcpMatchRanges.getTcpDestinationPortStart();
-                       if (tcpDestinationPortStart != null && tcpDestinationPortStart.getValue() != null)
-                               dstPortStart = tcpDestinationPortStart.getValue().shortValue();
-                       PortNumber tcpSourcePortStart = tcpMatchRanges.getTcpSourcePortStart();
-                       if (tcpSourcePortStart != null && tcpSourcePortStart.getValue() != null)
-                               srcPortStart = tcpSourcePortStart.getValue().shortValue();
-                       PortNumber tcpDestinationPortEnd = tcpMatchRanges.getTcpDestinationPortEnd();
-                       if (tcpDestinationPortEnd != null && tcpDestinationPortEnd.getValue() != null)
-                               dstPortEnd = tcpDestinationPortEnd.getValue().shortValue();
-                       PortNumber tcpSourcePortEnd = tcpMatchRanges.getTcpSourcePortEnd();
-                       if (tcpSourcePortEnd != null && tcpSourcePortEnd.getValue() != null)
-                               srcPortEnd = tcpSourcePortEnd.getValue().shortValue();
-               }
-               classifier.setDestinationPortStart(dstPortStart);
-               classifier.setSourcePortStart(srcPortStart);
-               classifier.setDestinationPortEnd(dstPortEnd);
-               classifier.setSourcePortEnd(srcPortEnd);
-       }
-
-       private void getUdpMatchRangeValues(UdpMatchRangesAttributes updRange, IExtendedClassifier classifier) {
-               short srcPortStart, srcPortEnd, dstPortStart, dstPortEnd;
-               srcPortStart = srcPortEnd = dstPortStart = dstPortEnd = 0;
-               if (updRange != null) {
-//                     classifier.setProtocol(IClassifier.Protocol.UDP);
-                       UpdMatchRanges updMatchRanges = updRange.getUpdMatchRanges();
-                       PortNumber udpDestinationPortStart = updMatchRanges.getUdpDestinationPortStart();
-                       if (udpDestinationPortStart != null && udpDestinationPortStart.getValue() != null)
-                               dstPortStart = udpDestinationPortStart.getValue().shortValue();
-                       PortNumber udpSourcePortStart = updMatchRanges.getUdpSourcePortStart();
-                       if (udpSourcePortStart != null && udpSourcePortStart.getValue() != null)
-                               srcPortStart = udpSourcePortStart.getValue().shortValue();
-                       PortNumber udpDestinationPortEnd = updMatchRanges.getUdpDestinationPortEnd();
-                       if (udpDestinationPortEnd != null && udpDestinationPortEnd.getValue() != null)
-                               dstPortEnd = udpDestinationPortEnd.getValue().shortValue();
-                       PortNumber udpSourcePortEnd = updMatchRanges.getUdpSourcePortEnd();
-                       if (udpSourcePortEnd != null && udpSourcePortEnd.getValue() != null)
-                               srcPortEnd = udpSourcePortEnd.getValue().shortValue();
-               }
-               classifier.setDestinationPortStart(dstPortStart);
-               classifier.setSourcePortStart(srcPortStart);
-               classifier.setDestinationPortEnd(dstPortEnd);
-               classifier.setSourcePortEnd(srcPortEnd);
-       }
-
-}
diff --git a/packetcable-provider/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/packetcable/packetcable/provider/impl/rev140131/PacketcableProviderModule.java b/packetcable-provider/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/packetcable/packetcable/provider/impl/rev140131/PacketcableProviderModule.java
deleted file mode 100644 (file)
index 50a0b15..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.packetcable.packetcable.provider.impl.rev140131;
-
-import org.opendaylight.controller.packetcable.provider.OpendaylightPacketcableProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class PacketcableProviderModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.packetcable.packetcable.provider.impl.rev140131.AbstractPacketcableProviderModule {
-    private static final Logger logger = LoggerFactory.getLogger(PacketcableProviderModule.class);
-    public PacketcableProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
-        super(identifier, dependencyResolver);
-    }
-
-    public PacketcableProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.packetcable.packetcable.provider.impl.rev140131.PacketcableProviderModule oldModule, java.lang.AutoCloseable oldInstance) {
-        super(identifier, dependencyResolver, oldModule, oldInstance);
-    }
-
-    @Override
-    public void customValidation() {
-        // add custom validation form module attributes here.
-    }
-
-    @Override
-    public java.lang.AutoCloseable createInstance() {
-        OpendaylightPacketcableProvider provider = new OpendaylightPacketcableProvider();
-        this.getBrokerDependency().registerProvider(provider, null);
-        logger.info("PacketCableProvider Registered with Broker");
-        return provider;
-    }
-
-}
diff --git a/packetcable-provider/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/packetcable/packetcable/provider/impl/rev140131/PacketcableProviderModuleFactory.java b/packetcable-provider/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/packetcable/packetcable/provider/impl/rev140131/PacketcableProviderModuleFactory.java
deleted file mode 100644 (file)
index 35747fd..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
-* Generated file
-*
-* Generated from: yang module name: packetcable-provider-impl yang module local name: packetcable-provider-impl
-* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
-* Generated at: Tue Sep 02 11:30:13 CDT 2014
-*
-* Do not modify this file unless it is present under src/main directory
-*/
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.packetcable.packetcable.provider.impl.rev140131;
-public class PacketcableProviderModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.packetcable.packetcable.provider.impl.rev140131.AbstractPacketcableProviderModuleFactory {
-
-}
diff --git a/packetcable-provider/src/main/yang/packetcable-provider-impl.yang b/packetcable-provider/src/main/yang/packetcable-provider-impl.yang
deleted file mode 100644 (file)
index 431a76e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-module packetcable-provider-impl {
-
-    yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:packetcable:packetcable-provider:impl";
-    prefix "packetcable-provider-impl";
-
-    import config { prefix config; revision-date 2013-04-05; }
-    import rpc-context { prefix rpcx; revision-date 2013-06-17; }
-    import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
-    import packetcable-provider { prefix pcp; revision-date 2014-01-31; }
-    import ietf-inet-types {prefix inet;revision-date 2010-09-24;}
-
-    description
-        "This module contains the base YANG definitions for
-        packetcable-provider impl implementation.";
-
-    revision "2014-01-31" {
-        description
-            "Initial revision.";
-    }
-
-    // This is the definition of the service implementation as a module identity.
-    identity packetcable-provider-impl {
-            base config:module-type;
-            config:provided-service pcp:packetcable-provider;
-            // Specifies the prefix for generated java classes.
-            config:java-name-prefix PacketcableProvider;
-    }
-
-    // Augments the 'configuration' choice node under modules/module.
-    augment "/config:modules/config:module/config:configuration" {
-        case packetcable-provider-impl {
-            when "/config:modules/config:module/config:type = 'packetcable-provider-impl'";
-            container broker {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-broker-osgi-registry;
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/packetcable-provider/src/main/yang/packetcable-provider.yang b/packetcable-provider/src/main/yang/packetcable-provider.yang
deleted file mode 100644 (file)
index 4836cd1..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-module packetcable-provider {
-
-    yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:packetcable:packetcable-provider";
-    prefix "packetcable-provider";
-
-    import config { prefix config; revision-date 2013-04-05; }
-    import rpc-context { prefix rpcx; revision-date 2013-06-17; }
-    import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
-    import ietf-inet-types {prefix inet;revision-date 2010-09-24;}
-
-    description
-        "This module contains the base YANG definitions for
-        packetcable-provider.";
-
-    revision "2014-01-31" {
-        description
-            "Initial revision.";
-    }
-
-    identity packetcable-provider{
-        base config:service-type;
-        config:java-class "org.opendaylight.controller.packetcable.provider.OpenDaylightPacketCableProviderService";
-    }
-}
diff --git a/packetcable-provider/src/test/java/org/opendaylight/controller/packetcable/providerTest/OpendaylightPacketcableProviderTest.java b/packetcable-provider/src/test/java/org/opendaylight/controller/packetcable/providerTest/OpendaylightPacketcableProviderTest.java
deleted file mode 100644 (file)
index 9b8dfb5..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-package org.opendaylight.controller.packetcable.providerTest;
-
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.Spy;
-import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.packetcable.provider.OpendaylightPacketcableProvider;
-import org.opendaylight.controller.packetcable.provider.processors.PCMMDataProcessor;
-import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.TrafficProfileBestEffortAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.TrafficProfileDocsisServiceClassNameAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.traffic.profile.rev140908.TrafficProfileFlowspecAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.node.cmts.broker.rev140909.CmtsAdded;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.node.cmts.broker.rev140909.CmtsRemoved;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.node.cmts.broker.rev140909.CmtsUpdated;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.node.cmts.rev140909.nodes.node.CmtsNode;
-
-@RunWith(MockitoJUnitRunner.class)
-public class OpendaylightPacketcableProviderTest {
-
-    @Mock
-    private NotificationProviderService notificationProvider;
-    @Mock
-    private DataBroker dataBroker;
-    // @Spy private NotificationProviderService spyNotificationProvider;
-    @Mock
-    private PCMMDataProcessor pcmmDataProcessor;
-    @Mock
-    private CmtsAdded cmtsAdd;
-    @Mock
-    private CmtsRemoved cmtsRemove;
-    @Mock
-    private CmtsUpdated cmtsUpdate;
-    @Mock
-    private ExecutorService executorMock;
-    @Mock
-    private TrafficProfileDocsisServiceClassNameAttributes docsis;
-    @Mock
-    private TrafficProfileBestEffortAttributes bestEffort;
-    @Mock
-    private TrafficProfileFlowspecAttributes flowSpec;
-    @Mock
-    private CmtsNode cmtsNode;
-    @Mock
-    private TransactionId transactionId;
-
-    @Mock
-    private OpendaylightPacketcableProvider packetCableProv;// =
-                                                            // mock(OpendaylightPacketcableProvider.class);
-
-    @Before
-    public void setUp() throws Exception {
-        packetCableProv.setNotificationProvider(notificationProvider);
-        packetCableProv.setDataProvider(dataBroker);
-        assertNotNull(packetCableProv);
-    }
-
-    @Test
-    public final void testNotifyConsumerOnCmtsAdd() {
-        packetCableProv.notifyConsumerOnCmtsAdd(cmtsNode, transactionId);
-        verify(packetCableProv, times(1)).notifyConsumerOnCmtsAdd(
-                any(CmtsNode.class), any(TransactionId.class));
-    }
-
-    @Test
-    public final void testNotifyConsumerOnCmtsRemove() {
-        packetCableProv.notifyConsumerOnCmtsRemove(cmtsNode, transactionId);
-        verify(packetCableProv, times(1)).notifyConsumerOnCmtsRemove(
-                any(CmtsNode.class), any(TransactionId.class));
-    }
-
-    @Test
-    public final void testNotifyConsumerOnCmtsUpdate() {
-        packetCableProv.notifyConsumerOnCmtsUpdate(cmtsNode, transactionId);
-        verify(packetCableProv, times(1)).notifyConsumerOnCmtsUpdate(
-                any(CmtsNode.class), any(TransactionId.class));
-    }
-
-    @Test
-    public final void testBuildTrafficProfileTrafficProfileDocsisServiceClassNameAttributes() {
-        packetCableProv.buildTrafficProfile(docsis);
-        verify(packetCableProv, times(1)).buildTrafficProfile(docsis);
-    }
-
-    @Test
-    public final void testBuildTrafficProfileTrafficProfileBestEffortAttributes() {
-        packetCableProv.buildTrafficProfile(bestEffort);
-        verify(packetCableProv, times(1)).buildTrafficProfile(bestEffort);
-    }
-
-    @Test
-    public final void testBuildTrafficProfileTrafficProfileFlowspecAttributes() {
-        packetCableProv.buildTrafficProfile(flowSpec);
-        verify(packetCableProv, times(1)).buildTrafficProfile(flowSpec);
-    }
-
-    @Test
-    public final void testClose() throws ExecutionException,
-            InterruptedException {
-        packetCableProv.close();
-        verify(packetCableProv, times(1)).close();
-    }
-
-}
diff --git a/packetcable-provider/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/packetcable/packetcable/provider/PacketcableProviderModuleTest.java b/packetcable-provider/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/packetcable/packetcable/provider/PacketcableProviderModuleTest.java
deleted file mode 100644 (file)
index 2eb2f68..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.packetcable.packetcable.provider;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.when;
-import static org.mockito.Mockito.verify;
-
-import static org.junit.Assert.*;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.controller.packetcable.provider.OpendaylightPacketcableProvider;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.packetcable.packetcable.provider.impl.rev140131.PacketcableProviderModule;
-
-@RunWith(MockitoJUnitRunner.class)
-public class PacketcableProviderModuleTest {
-
-    @Mock
-    private OpendaylightPacketcableProvider provider;
-    @InjectMocks
-    private PacketcableProviderModule packetCableProviderModuleMock = mock(PacketcableProviderModule.class);
-
-    @Before
-    public void setUp() throws Exception {
-        when(packetCableProviderModuleMock.createInstance()).thenReturn(
-                provider);
-    }
-
-    @Test
-    public final void testCreateInstance() {
-        assertNotNull(packetCableProviderModuleMock.createInstance());
-        verify(packetCableProviderModuleMock, times(1)).createInstance();
-    }
-
-}
diff --git a/pom.xml b/pom.xml
index db67ce5283e50588a853be3118ab6c645bd426ab..b14e5e14bf27d7d82c8f685c09a267cde6a0064b 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -1,24 +1,21 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <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.opendaylight.controller</groupId>
-               <artifactId>sal-parent</artifactId>
-               <version>1.3.0-SNAPSHOT</version>
-        <relativePath/>
-       </parent>
-
-       <groupId>org.opendaylight.packetcable</groupId>
-       <artifactId>packetcable</artifactId>
-       <name>packetcable</name> <!-- Used by Sonar to set project name -->
-       <packaging>pom</packaging>
-
+    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.opendaylight.controller</groupId>
+        <artifactId>sal-parent</artifactId>
+        <version>1.3.0-SNAPSHOT</version>
+        <relativePath />
+    </parent>
+    <groupId>org.opendaylight.packetcable</groupId>
+    <artifactId>packetcable</artifactId>
+    <name>packetcable</name> <!-- Used by Sonar to set project name -->
+    <packaging>pom</packaging>
     <properties>
-      <openflowplugin.version>0.2.0-SNAPSHOT</openflowplugin.version>
+        <openflowplugin.version>0.2.0-SNAPSHOT</openflowplugin.version>
     </properties>
-
-   <distributionManagement>
+    <distributionManagement>
         <!-- OpenDayLight Released artifact -->
         <repository>
             <id>opendaylight-release</id>
             <url>${nexusproxy}/repositories/opendaylight.snapshot</url>
         </snapshotRepository>
     </distributionManagement>
-
-       <modules>
-               <module>packetcable-driver</module>
-               <module>packetcable-model</module>
-               <module>packetcable-provider</module>
-               <module>packetcable-consumer</module>
-               <module>features-packetcable</module>
-               <module>packetcable-config</module>
-               <module>packetcable-karaf</module>
-
-               <!-- New modules for the new Arris API -->
-               <module>packetcable-policy-model</module>
-               <module>packetcable-policy-server</module>
-               <module>features-packetcable-policy</module>
-               <module>packetcable-policy-karaf</module>
-
-               <!-- Jar module CMTS emulator for testing -->
-               <module>packetcable-emulator</module>
-       </modules>
-       <scm>
-               <connection>scm:git:ssh://git.opendaylight.org:29418/packetcable.git</connection>
-               <developerConnection>scm:git:ssh://git.opendaylight.org:29418/packetcable.git</developerConnection>
-               <tag>HEAD</tag>
-               <url>https://wiki.opendaylight.org/view/PacketCablePCMM:Main</url>
-       </scm>
-       <dependencies>
-               <dependency>
-                       <groupId>org.opendaylight.openflowplugin.model</groupId>
-                       <artifactId>model-flow-base</artifactId>
+    <modules>
+        <module>packetcable-driver</module>
+        <!-- New modules for the new Arris API -->
+        <module>packetcable-policy-model</module>
+        <module>packetcable-policy-server</module>
+        <module>features-packetcable-policy</module>
+        <module>packetcable-policy-karaf</module>
+        <!-- Jar module CMTS emulator for testing -->
+        <module>packetcable-emulator</module>
+    </modules>
+    <scm>
+        <connection>scm:git:ssh://git.opendaylight.org:29418/packetcable.git</connection>
+        <developerConnection>scm:git:ssh://git.opendaylight.org:29418/packetcable.git</developerConnection>
+        <tag>HEAD</tag>
+        <url>https://wiki.opendaylight.org/view/PacketCablePCMM:Main</url>
+    </scm>
+    <dependencies>
+        <dependency>
+            <groupId>org.opendaylight.openflowplugin.model</groupId>
+            <artifactId>model-flow-base</artifactId>
             <version>${openflowplugin.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.openflowplugin.model</groupId>
-                       <artifactId>model-flow-service</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.openflowplugin.model</groupId>
+            <artifactId>model-flow-service</artifactId>
             <version>${openflowplugin.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.yangtools.model</groupId>
-                       <artifactId>ietf-inet-types</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.yangtools.model</groupId>
-                       <artifactId>ietf-yang-types</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.controller.model</groupId>
-                       <artifactId>model-inventory</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.yangtools.model</groupId>
-                       <artifactId>opendaylight-l2-types</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.openflowplugin.model</groupId>
-                       <artifactId>model-flow-statistics</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools.model</groupId>
+            <artifactId>ietf-inet-types</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools.model</groupId>
+            <artifactId>ietf-yang-types</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.controller.model</groupId>
+            <artifactId>model-inventory</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools.model</groupId>
+            <artifactId>opendaylight-l2-types</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.openflowplugin.model</groupId>
+            <artifactId>model-flow-statistics</artifactId>
             <version>${openflowplugin.version}</version>
-               </dependency>
-       </dependencies>
-       <build>
-               <plugins>
-                       <plugin>
-                               <artifactId>maven-checkstyle-plugin</artifactId>
-                               <configuration>
-                                       <skip>true</skip>
-                               </configuration>
-                       </plugin>
-               </plugins>
-       </build>
-
-
-       <!-- <profiles> -->
-       <!-- <profile> -->
-       <!-- <id>integrationtests</id> -->
-       <!-- <activation> -->
-       <!-- <activeByDefault>false</activeByDefault> -->
-       <!-- </activation> -->
-       <!-- <modules> -->
-       <!-- <module>packetcable-it</module> -->
-       <!-- </modules> -->
-       <!-- </profile> -->
-       <!-- </profiles> -->
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>