diff --git a/api/abstract_olt_api.proto b/api/abstract_olt_api.proto
index 7a8cb69..6c5304b 100644
--- a/api/abstract_olt_api.proto
+++ b/api/abstract_olt_api.proto
@@ -104,7 +104,6 @@
    bool Success=1;
 }
 message ReflowMessage{
-
 }
 message ReflowReturn{
     bool Success=1;
@@ -115,6 +114,14 @@
 message OutputReturn{
    bool Success=1;
 }
+message FullInventoryMessage{
+}
+message InventoryMessage{
+   string Clli=1;
+}
+message InventoryReturn{
+   string JsonDump=1;
+}
 service AbstractOLT{
    rpc Echo(EchoMessage) returns (EchoReplyMessage){
       option(google.api.http)={
@@ -171,5 +178,17 @@
 	    body:"*"
       };
    }
+   rpc GetFullInventory(FullInventoryMessage)returns(InventoryReturn){
+      option(google.api.http)={
+        post:"/v1/FullInventory"
+	    body:"*"
+      };
+   }
+   rpc GetInventory(InventoryMessage)returns(InventoryReturn){
+      option(google.api.http)={
+        post:"/v1/Inventory"
+	    body:"*"
+      };
+   }
 }
 
diff --git a/api/handler.go b/api/handler.go
index ee70d74..f2e832e 100644
--- a/api/handler.go
+++ b/api/handler.go
@@ -23,6 +23,7 @@
 	"sync"
 
 	"gerrit.opencord.org/abstract-olt/internal/pkg/impl"
+	"gerrit.opencord.org/abstract-olt/models/inventory"
 	context "golang.org/x/net/context"
 )
 
@@ -130,7 +131,7 @@
 }
 
 /*
-ProvsionOntFull - provisions ont using sTag,cTag,NasPortID, and CircuitID passed in
+ProvisionOntFull - provisions ont using sTag,cTag,NasPortID, and CircuitID passed in
 */
 func (s *Server) ProvisionOntFull(ctx context.Context, in *AddOntFullMessage) (*AddOntReturn, error) {
 	clli := in.GetCLLI()
@@ -159,13 +160,36 @@
 	return &DeleteOntReturn{Success: success}, err
 }
 
+/*
+Reflow - iterates through provisioning to rebuild Seba-Pod
+*/
 func (s *Server) Reflow(ctx context.Context, in *ReflowMessage) (*ReflowReturn, error) {
 	success, err := impl.Reflow()
 	return &ReflowReturn{Success: success}, err
 
 }
+
+/*
+Output - causes an immediate backup to be created
+*/
 func (s *Server) Output(ctx context.Context, in *OutputMessage) (*OutputReturn, error) {
 	success, err := impl.DoOutput()
 	return &OutputReturn{Success: success}, err
 
 }
+
+/*
+GetFullInventory - gets a full json dump of the currently provisioned equipment
+*/
+func (s *Server) GetFullInventory(ctx context.Context, in *FullInventoryMessage) (*InventoryReturn, error) {
+	json := inventory.GatherAllInventory()
+	return &InventoryReturn{JsonDump: json}, nil
+}
+
+/*
+GetInventory - returns a json dump of a particular seba-pod
+*/
+func (s *Server) GetInventory(ctx context.Context, in *InventoryMessage) (*InventoryReturn, error) {
+	json := inventory.GatherInventory(in.GetClli())
+	return &InventoryReturn{JsonDump: json}, nil
+}
diff --git a/client/main.go b/client/main.go
index abecae7..a91b22a 100644
--- a/client/main.go
+++ b/client/main.go
@@ -40,6 +40,8 @@
 	deleteOnt := flag.Bool("d", false, "deleteOnt")
 	output := flag.Bool("output", false, "dump output")
 	reflow := flag.Bool("reflow", false, "reflow provisioning tosca")
+	fullInventory := flag.Bool("full_inventory", false, "pull full inventory json")
+	inventory := flag.Bool("inventory", false, "pull json inventory for a specific clli")
 	/* END COMMAND FLAGS */
 
 	/* CREATE CHASSIS FLAGS */
@@ -95,7 +97,7 @@
 		}
 	}
 
-	cmdFlags := []*bool{echo, addOlt, update, create, provOnt, provOntFull, deleteOnt, output, reflow}
+	cmdFlags := []*bool{echo, addOlt, update, create, provOnt, provOntFull, deleteOnt, output, reflow, fullInventory, inventory}
 	cmdCount := 0
 	for _, flag := range cmdFlags {
 		if *flag {
@@ -163,6 +165,10 @@
 		deleteONT(c, clli, slot, port, ont, serial)
 	} else if *reflow {
 		reflowTosca(c)
+	} else if *fullInventory {
+		getFullInventory(c)
+	} else if *inventory {
+		getInventory(c, clli)
 	}
 
 }
@@ -325,6 +331,26 @@
 	log.Printf("Response from server: %t", res.GetSuccess())
 	return nil
 }
+func getFullInventory(c api.AbstractOLTClient) error {
+	res, err := c.GetFullInventory(context.Background(), &api.FullInventoryMessage{})
+	if err != nil {
+		debug.PrintStack()
+		fmt.Printf("Error when calling Reflow %s", err)
+		return err
+	}
+	log.Println(res.GetJsonDump())
+	return nil
+}
+func getInventory(c api.AbstractOLTClient, clli *string) error {
+	res, err := c.GetInventory(context.Background(), &api.InventoryMessage{Clli: *clli})
+	if err != nil {
+		debug.PrintStack()
+		fmt.Printf("Error when calling Reflow %s", err)
+		return err
+	}
+	log.Println(res.GetJsonDump())
+	return nil
+}
 
 func usage() {
 	var output = `
diff --git a/models/inventory/gather.go b/models/inventory/gather.go
new file mode 100644
index 0000000..9f2bd21
--- /dev/null
+++ b/models/inventory/gather.go
@@ -0,0 +1,129 @@
+/*
+ Copyright 2017 the original author or authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+package inventory
+
+import (
+	"encoding/json"
+	"net"
+
+	"gerrit.opencord.org/abstract-olt/models"
+	"gerrit.opencord.org/abstract-olt/models/physical"
+)
+
+type Chassis struct {
+	Clli      string
+	Rack      int
+	Shelf     int
+	XOSAddr   net.TCPAddr
+	LineCards []LineCard
+}
+type LineCard struct {
+	Number int
+	Olts   []PhysicalOlt
+}
+type PhysicalOlt struct {
+	Address  net.TCPAddr
+	Hostname string
+	Ports    []Port
+}
+type Port struct {
+	AbstractNumber int
+	PhysicalNumber int
+	Onts           []Ont
+}
+type Ont struct {
+	Number       int
+	SVlan        uint32
+	CVlan        uint32
+	SerialNumber string
+	NasPortID    string
+	CircuitID    string
+}
+
+func GatherAllInventory() string {
+	chassisMap := models.GetChassisMap()
+	chassis_s := []Chassis{}
+	for clli, chassisHolder := range *chassisMap {
+		chassis := parseClli(clli, chassisHolder)
+		chassis_s = append(chassis_s, chassis)
+	}
+	bytes, _ := json.Marshal(chassis_s)
+	return string(bytes)
+}
+
+func GatherInventory(clli string) string {
+	chassisMap := models.GetChassisMap()
+	chassisHolder := (*chassisMap)[clli]
+	chassis := parseClli(clli, chassisHolder)
+	bytes, _ := json.Marshal(chassis)
+	return string(bytes)
+}
+
+func parseClli(clli string, chassisHolder *models.ChassisHolder) Chassis {
+	abstract := chassisHolder.AbstractChassis
+	chassis := Chassis{}
+	chassis.Clli = clli
+	chassis.Rack = abstract.Rack
+	chassis.Shelf = abstract.Shelf
+	chassis.XOSAddr = chassisHolder.PhysicalChassis.XOSAddress
+
+	lineCards := []LineCard{}
+	for index, slot := range abstract.Slots {
+		if slot.Ports[0].PhysPort != nil {
+			lineCard := LineCard{Number: index + 1}
+			var currentOLT *physical.SimpleOLT
+			var physicalOLT PhysicalOlt
+			var ports []Port
+			olts := []PhysicalOlt{}
+			for i := 0; i < 16; i++ {
+				ponPort := slot.Ports[i].PhysPort
+				if ponPort != nil {
+					parentOLT := ponPort.Parent
+					if currentOLT != parentOLT {
+						if currentOLT != nil {
+							physicalOLT.Ports = ports
+							olts = append(olts, physicalOLT)
+						}
+						physicalOLT = PhysicalOlt{Address: parentOLT.Address, Hostname: parentOLT.Hostname}
+						currentOLT = parentOLT
+						ports = []Port{}
+
+					}
+					port := Port{AbstractNumber: i + 1, PhysicalNumber: ponPort.Number}
+					onts := []Ont{}
+					for _, physicalONT := range ponPort.Onts {
+						if physicalONT.Active {
+							ont := Ont{Number: physicalONT.Number, SVlan: physicalONT.Svlan, CVlan: physicalONT.Cvlan, SerialNumber: physicalONT.SerialNumber,
+								NasPortID: physicalONT.NasPortID, CircuitID: physicalONT.CircuitID}
+							onts = append(onts, ont)
+						}
+					}
+					port.Onts = onts
+					ports = append(ports, port)
+				}
+
+				if i == 15 { // last one
+					physicalOLT.Ports = ports
+					olts = append(olts, physicalOLT)
+				}
+			}
+			lineCard.Olts = olts
+			lineCards = append(lineCards, lineCard)
+		}
+	}
+	chassis.LineCards = lineCards
+	return chassis
+}
