Add customer & subscription management commands 99/7799/1
authorKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Thu, 17 Aug 2017 06:47:58 +0000 (12:17 +0530)
committerKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Thu, 17 Aug 2017 06:48:43 +0000 (12:18 +0530)
CLI-13
Change-Id: Ia21006ca1dae3a451782c7c2e4df535e05ecaca6
Signed-off-by: Kanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
main/src/test/java/org/onap/cli/main/OnapCliMainTest.java
plugins/aai/pom.xml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/customer/customer-create-schema.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/customer/customer-list-schema.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/customer/customer-show-schema.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-create-schema.yaml [new file with mode: 0644]
plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-list-schema.yaml [new file with mode: 0644]
plugins/pom.xml

index 754dff8..3f4b04a 100644 (file)
@@ -87,6 +87,12 @@ public class OnapCliMainTest {
         this.handle(new String[] { "sample-test", "--help" });
     }
 
+    @Ignore
+    @Test
+    public void testAAICustomerList() {
+        this.handle(new String[] { "customer-list", "-u", "AAI", "-p", "AAI", "-m", "https://192.168.17.12:8443" });
+    }
+
     @Test
     public void testHelpSampleCreateCommand() throws OnapCommandException {
         ClassLoader cl = ClassLoader.getSystemClassLoader();
diff --git a/plugins/aai/pom.xml b/plugins/aai/pom.xml
new file mode 100644 (file)
index 0000000..98514b8
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright 2017 Huawei Technologies Co., Ltd.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+         http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onap.cli</groupId>
+        <artifactId>cli-plugins</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>cli-plugins-aai</artifactId>
+    <name>cli/plugins/aai</name>
+    <packaging>jar</packaging>
+    <build>
+        <plugins>
+            <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-dependency-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-create-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-create-schema.yaml
new file mode 100644 (file)
index 0000000..58c1a09
--- /dev/null
@@ -0,0 +1,32 @@
+onap_cmd_schema_version: 1.0
+name: customer-create
+description: Create a customer in Onap
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+
+parameters:
+  - name: customer-name
+    description: Onap customer name
+    type: string
+    short_option: x
+    long_option: customer-name
+    is_optional: false
+  - name: subscriber-name
+    description: Onap subscriber name
+    type: string
+    short_option: y
+    long_option: subscriber-name
+    is_optional: false
+
+http:
+  request:
+    uri: /aai/v8/business/customers/customer/${customer-name}
+    method: PUT
+    body: '{"global-customer-id": "${customer-name}", "subscriber-name": "${subscriber-name}", "subscriber-type": "INFRA"}'
+  success_codes:
+    - 201
+  sample_response:
+    body: ''
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-list-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-list-schema.yaml
new file mode 100644 (file)
index 0000000..3d81166
--- /dev/null
@@ -0,0 +1,25 @@
+onap_cmd_schema_version: 1.0
+name: customer-list
+description: Lists the registetred customers in Onap
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+results:
+  direction: landscape
+  attributes:
+    - name: name
+      description: Onap customer name
+      scope: short
+      type: string
+http:
+  request:
+    uri: /aai/v8/business/customers
+    method: GET
+  success_codes:
+    - 200
+  result_map:
+    name: $b{customer.[*].global-customer-id}
+  sample_response:
+    body: '{"customer":[{"global-customer-id":"Demonstration","subscriber-name":"Demonstration","subscriber-type":"INFRA","resource-version":"1500729865","service-subscriptions":{"service-subscription":[{"service-type":"vFW","resource-version":"1500729865","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}},{"service-type":"vLB","resource-version":"1500729865","service-instances":{"service-instance":[{"service-instance-id":"d6167ea1-ff83-4236-9b32-37494dfb7537","service-instance-name":"demoVLB-1","persona-model-id":"af01a849-721b-407d-a880-be836e26ee81","persona-model-version":"1.0","resource-version":"1501154574","relationship-list":{"relationship":[{"related-to":"generic-vnf","related-link":"https://192.168.17.12:8443/aai/v8/network/generic-vnfs/generic-vnf/16c6d95d-44e3-4527-aa63-a495bf8e776e/","relationship-data":[{"relationship-key":"generic-vnf.vnf-id","relationship-value":"16c6d95d-44e3-4527-aa63-a495bf8e776e"}],"related-to-property":[{"property-key":"generic-vnf.vnf-name","property-value":"demoVLB-1-VNF-1"}]}]}}]},"relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}}]}},{"global-customer-id":"Linan","subscriber-name":"Linan","subscriber-type":"INFRA","resource-version":"1501768482","service-subscriptions":{"service-subscription":[{"service-type":"vFW","resource-version":"1501768482","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}},{"service-type":"vLB","resource-version":"1501768482","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}}]}},{"global-customer-id":"DemoCust_7151e36a-1a57-4993-b513-54134f2b8f19","subscriber-name":"DemoCust_7151e36a-1a57-4993-b513-54134f2b8f19","subscriber-type":"INFRA","resource-version":"1501766760","service-subscriptions":{"service-subscription":[{"service-type":"vFW","resource-version":"1501766760","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}}]}}]}'
\ No newline at end of file
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-show-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/customer/customer-show-schema.yaml
new file mode 100644 (file)
index 0000000..7923779
--- /dev/null
@@ -0,0 +1,49 @@
+onap_cmd_schema_version: 1.0
+name: customer-show
+description: Lists the registetred customers in Onap
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+
+parameters:
+  - name: customer-name
+    description: Onap customer name
+    type: string
+    short_option: x
+    long_option: customer-name
+    is_optional: false
+
+results:
+  direction: landscape
+  attributes:
+    - name: name
+      description: Onap customer name
+      scope: short
+      type: string
+    - name: subscriber-name
+      description: Onap subscriber name
+      scope: short
+      type: string
+    - name: resource-version
+      description: Onap subscriber resource version
+      scope: long
+      type: string
+    - name: subscriber-type
+      description: Onap subscriber type
+      scope: long
+      type: string
+http:
+  request:
+    uri: /aai/v8/business/customers/customer/${customer-name}
+    method: GET
+  success_codes:
+    - 200
+  result_map:
+    name: $b{$.global-customer-id}
+    subscriber-name: $b{$.subscriber-name}
+    subscriber-type: $b{$.subscriber-type}
+    resource-version: $b{$.resource-version}
+  sample_response:
+    body: '{"global-customer-id":"Linan","subscriber-name":"Linan","subscriber-type":"INFRA","resource-version":"1501768482","service-subscriptions":{"service-subscription":[{"service-type":"vFW","resource-version":"1501768482","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}},{"service-type":"vLB","resource-version":"1501768482","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}}]}}'
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-create-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-create-schema.yaml
new file mode 100644 (file)
index 0000000..58b5fc5
--- /dev/null
@@ -0,0 +1,62 @@
+onap_cmd_schema_version: 1.0
+name: subscription-create
+description: Create a subscription for a customer in Onap
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+
+parameters:
+  - name: customer-name
+    description: Onap customer name
+    type: string
+    short_option: x
+    long_option: customer-name
+    is_optional: false
+  - name: subscriber-name
+    description: Onap subscriber name
+    type: string
+    short_option: y
+    long_option: subscriber-name
+    is_optional: false
+  - name: cloud-type
+    description: Onap cloud type (openstack, rackspace)
+    type: string
+    short_option: z
+    long_option: cloud-type
+    is_optional: false
+  - name: cloud-region
+    description: Onap cloud region
+    type: string
+    short_option: r
+    long_option: cloud-region
+    is_optional: false
+  - name: cloud-tenant-id
+    description: Onap cloud tenant id
+    type: string
+    short_option: c
+    long_option: cloud-tenant-id
+    is_optional: false
+  - name: service-type
+    description: Onap service type
+    type: string
+    short_option: e
+    long_option: service-type
+    is_optional: false
+  - name: resource-version
+    description: Onap subscription resource version. It is mandatory for existing customer to create a new subscription
+    type: string
+    short_option: g
+    long_option: resource-version
+    is_optional: true
+http:
+  request:
+    uri: /aai/v8/business/customers/customer/${customer-name}
+    method: PUT
+    body: '{"global-customer-id": "${customer-name}", "subscriber-name": "${subscriber-name}", "subscriber-type": "INFRA", "resource-version":"${resource-version}", "service-subscriptions":{"service-subscription":[{"relationship-list":{"relationship":[{"related-to":"tenant","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"${cloud-type}"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"${cloud-region}"},{"relationship-key":"tenant.tenant-id","relationship-value":"${cloud-tenant-id}"}]}]},"service-type":"${service-type}"}]}}}'
+  success_codes:
+    - 200
+    - 201
+  sample_response:
+    body: ''
diff --git a/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-list-schema.yaml b/plugins/aai/src/main/resources/onap-cli-schema/subscription/subscription-list-schema.yaml
new file mode 100644 (file)
index 0000000..e3131eb
--- /dev/null
@@ -0,0 +1,39 @@
+onap_cmd_schema_version: 1.0
+name: subscription-list
+description: Lists the subscription for a given customer in Onap
+service:
+  name: aai
+  version: v8
+  auth: basic
+  mode: direct
+
+parameters:
+  - name: customer-name
+    description: Onap customer name
+    type: string
+    short_option: x
+    long_option: customer-name
+    is_optional: false
+
+results:
+  direction: landscape
+  attributes:
+    - name: service-type
+      description: Onap service type
+      scope: short
+      type: string
+
+http:
+  request:
+    uri: /aai/v8/business/customers/customer/${customer-name}
+    method: GET
+  success_codes:
+    - 200
+  result_map:
+    service-type: $b{$.service-subscriptions.service-subscription.[*].service-type}
+  sample_response:
+    body: '{"global-customer-id":"Linan","subscriber-name":"Linan","subscriber-type":"INFRA","resource-version":"1501768482","service-subscriptions":{"service-subscription":[{"service-type":"vFW","resource-version":"1501768482","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}},{"service-type":"vLB","resource-version":"1501768482","relationship-list":{"relationship":[{"related-to":"tenant","related-link":"https://192.168.17.12:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/Rackspace/RegionOne/tenants/tenant/e69e6d64b44347509c3fc512391f34a6/","relationship-data":[{"relationship-key":"cloud-region.cloud-owner","relationship-value":"Rackspace"},{"relationship-key":"cloud-region.cloud-region-id","relationship-value":"RegionOne"},{"relationship-key":"tenant.tenant-id","relationship-value":"e69e6d64b44347509c3fc512391f34a6"}],"related-to-property":[{"property-key":"tenant.tenant-name","property-value":"onap"}]}]}}]}}'
+
+
+
+
index 93ac3b0..40e7b8e 100644 (file)
@@ -45,6 +45,7 @@
     </dependencies>
     <modules>
         <module>msb</module>
+        <module>aai</module>
     </modules>
      <build>
          <pluginManagement>