# OpenOLT adapter

The OpenOLT adapter connects the [VOLTHA
core](https://gerrit.opencord.org/gitweb?p=voltha-go.git) to an OLT device
running the [OpenOLT agent](https://gerrit.opencord.org/gitweb?p=openolt.git).

## Development `make` targets

The `Makefile` contains many commands that are useful in development:

```
% make help

build                     : Alias for 'docker build'
clean                     : Removes any local filesystem artifacts generated by a build
distclean                 : Removes any local filesystem artifacts generated by a build or test run
docker-build-profile      : Build openolt adapter docker image with profiling enabled
docker-build              : Build openolt adapter docker image
docker-kind-load          : Load docker images into a KinD cluster
docker-push               : Push the docker images to an external repository
help                      : Print help for each Makefile target
lint-dockerfile           : Perform static analysis on Dockerfile
lint-mod                  : Verify the Go dependencies
lint                      : Run all lint targets
local-lib-go              : Copies a local version of the voltha-lib-go dependency into the vendor directory
local-protos              : Copies a local version of the voltha-protos dependency into the vendor directory
mod-update                : Update go mod files
sca                       : Runs static code analysis with the golangci-lint tool
test                      : Run unit tests
```

Some highlights:

- It's recommended that you run the `lint`, `sca`, and `test` targets before
  submitting code changes.

- The `docker-*` targets for building and pushing Docker images depend on the
  variables `DOCKER_REGISTRY`, `DOCKER_REPOSITORY`, and `DOCKER_TAG` as
  [described in the CORD
  documentation](https://guide.opencord.org/master/developer/test_release_software.html#publish-docker-container-images-to-public-dockerhub-job-docker-publish)

- If you make changes the dependencies in the `go.mod` file, you will need to
  run `make mod-update` to update the `go.sum` and `vendor` directory.

### Building with a Local Copy of `voltha-protos` or `voltha-lib-go`

If you want to build/test using a local copy of the `voltha-protos` or
`voltha-lib-go` libraries this can be accomplished by using the environment
variables `LOCAL_PROTOS` and `LOCAL_LIB_GO`. These environment variables should
be set to the filesystem path where the local source is located, e.g.:

```bash
export LOCAL_PROTOS=/path/to/voltha-protos
export LOCAL_LIB_GO=/path/to/voltha-lib-go
```

Then run `make local-protos` and/or `make local-lib-go` as is appropriate to
copy them into the `vendor` directory.

> NOTE: That the files in the `vendor` directory are no longer what is in the
> most recent commit, and it will take manual `git` intervention to put the
> original files back.