Use Adapter SDK
Prerequisites
To start using the CWM Adapter SDK, you need to install a Golang environment, Docker Desktop, and download the Adapter SDK contained in the CWM software package.
Install Go
To develop and test an adapter, you need to install the Golang environment. Follow the installation instructions dedicated for your OS: https://go.dev/doc/install.
Install Docker
Docker is required by the SDK to run the adapter builder container which parses the .proto
files and generates .go
files and installables. Download and install the Docker engine dedicated for your system from here [https://docs.docker.com/engine/install/]. Alternatively, if you have a Docker business license, you can use Docker Desktop.
Get CWM Adapter SDK
Go to Cisco Software Download page to download the CWM Software Package, where the Adapter SDK binary resides.
Include the location of adapter developer binaries by setting the environment variable path:
export PATH=/path/to/adapter-dev-binaries:$PATH

NoteRemember to replace the
/path/to/adapter-dev-binaries
with your actual path.
Overview of commands
The Adapter SDK application offers the following set of commands for managing an adapter:
cwm-sdk version
- display the version of cwm-sdk application.cwm-sdk create-adapter
- create a go module with a package and the corresponding .proto files.cwm-sdk extend-adapter
- add a new feature to an existing adapter (go package and .proto files).cwm-sdk update-adapter
- update activities, input and output (go code).cwm-sdk upgrade-adapter
- upgrade the adapter to match CWM.cwm-sdk create-installable
- create an archive installable by CWM.
Create new adapter
To create an adapter, open a command-line terminal and run:
cwm-sdk create-adapter [options] -product <product-name>

NoteWhile the
-product
parameter is required for adapter creation, other options can be skipped.
Options
These are the options you can add to the create-adapter
command:
|
Data type | Requirement | Description |
---|---|---|---|
-exclude-resource |
string | optional | skip creation of the .resource.proto file from template. |
-feature |
string | optional | provide name for the go package assigned to activities (default: "<adapter-name>"). |
-go-module |
string | optional | provide name for the module assigned to the go.mod file (default: "www.cisco.com/cwm/adapters/<vendor>/<adapter-name>"). |
-ignore-template |
optional | skip generation of example code in the go and proto files. | |
-location |
string | optional | point to adapter location (default: current directory). |
-os-architecture |
string | optional | define architecture in which adapter is developed. Valid options are: 'linux','mac-intel','mac-arm' and 'windows' (default: "linux"). |
-product |
string | required | provide name for the go module corresponding to the product name you create an adapter for. |
-vendor |
string | optional | provide unique name for the company creating the adapter (default "cisco"). |
-verbose |
string | optional | output progress info. Options are: off , on and very (default "off"). |
Output
Once the command is executed, verify the generated output inside the new adapter directory:
<adapter-name>/adapter.properties
<adapter-name>/go/go.mod
<adapter-name>/proto/<vendor\>.<product\>.common.adapter.proto
<adapter-name>/proto/<vendor\>.<product\>.<feature\>.adapter.proto
(if you defined the-feature
option)<adapter-name>/Makefile
Extend adapter with features
To add a feature (a go package) for an adapter, open a terminal and from your main adapter directory, run:
cwm-sdk extend-adapter [options] -feature <feature_name>
Options
|
Data type | Requirement | Description |
---|---|---|---|
-activity |
string | optional | Provide name for a new activity to add. |
-feature |
string | required | Provide name for the feature to add (default: "<adapter-name>"). |
-ignore-template |
optional | Skip generation of example code in the go and proto files. | |
-location |
string | optional | Point to the location of adapter to which you add the feature (default: current directory). |
-verbose |
string | optional | Output progress info. Options are: off , on and very (default "off"). |
Output
Once the command is executed, verify the generated output inside the new adapter directory:
<adapter-name>/proto/<vendor>.<module>.<package>.adapter.proto
Generate/update activity
Once you have an adapter with at least one feature added, you can proceed to creating activities. Activities are defined within the .proto
file for a specific feature (go package). You can do this manually or use the OASX extension for OpenAPI-enabled services to automatically build of message logic in the .proto
files.
Once the activities are defined, you can generate the input and output files for the adapter. Go to your main adapter directory and run:
cwm-sdk update-adapter
Options
-features
string - provide a comma-separated list of features to update.-location
string - point to location of adapter to update (default: current directory).-verbose
string - output progress info. Options are:off
,on
andvery
(default "off").
Output
Once the command is executed, verify the generated output inside the adapter directory:
go/<feature\>/<vendor>.<product>.<feature>.adapter.pb.go
go/common/<vendor>.<product>.common.adapter.pb.go
The .pb.go
files contain go structs defining the input and output parameters of the adapter. They shouldn't be altered manually.
Once the command is executed, verify the generated output inside the adapter directory:
go/<feature\>/activities.go
The activities.go
file contains stubs for the gRPCs defined in the .adapter.proto
. Once generated, you can add functionality to the activities by defining the message.
Upgrade adapter
To upgrade the go module to contain matching versions for go and required imports, go to the root directory of your adapter and run:
cwm-sdk upgrade-adapter [options]
Options
-cwm-version
string - provide the version of CWM to upgrade to (default is latest).-location
string - point to location of adapter to upgrade (default: current directory).-verbose
string - output progress info. Options are:off
,on
andvery
(default "off").
Output
- go/go.mod
The go.mod
file module will be modifed allowing the adapter to be installed correctly.
Export library to local directory
The cwm-sdk
uses the SDK go module for performing tasks. In certain cases you might want to have the SDK go module created in the adapter directory beforehand. For this purpose, use the export-lib
command.
The export-lib
command comes with the following options:
Option | Data type | Description | Status |
---|---|---|---|
-location | string | Provide location where SDK lib should be created. (default: current directory) | optional |
-verbose | string | Show command progress info. Options are: off, on, or very. | optional |
Create adapter installable version
To create a tar.gz
archive for installing your adapter for different operating systems, go to the root directory of your adapter and run:
cwm-sdk create-installable [options]
Generates code based on the proto file.
Options
-cwm-arch
string - match provided architecture of CWM. Options are:amd64
,arm64
.-cwm-version
string - provide a CWM version to match the created installable (default is latest).-include-src
- includego
and.proto
sources.-location
string - point to where the installable should be created (default: current directory).-verbose
string - output progress info. Options are:off
,on
andvery
(default "off").
Output
- out/<vendor>-<product>-v<X.Y.Z>.tar.gz

NoteBy default, the generated archive doesn't contain the adapter go module and proto files. To include them, use the
-include-src
option while running cwm-sdk create-installable
. Note that the go module is modified using the go vendor command in order to not have any external dependencies.