Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes for issues 158,159,160,161,162,163, improved local and remote tests #164

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
node_modules
remotetests/testconfig.js
testdir.zip
test.zip
*.tgz
*.tgz
99 changes: 57 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,23 @@ This is a tool for deploying API proxies and Node.js applications to the Apigee

You must have an account on Apigee Edge to perform any `apigeetool` functions. These functions include:

* deploying an API proxy to Edge,
* undeploying an API proxy from Edge,
* deploying an API proxy or shared flow to Edge,
* undeploying an API proxy or shared flow from Edge,
* deploying Node.js apps to Edge,
* listing deployed API proxies on Edge,
* retrieving deployed proxies and apps from Edge,
* deleting proxy definitions from Edge, and
* listing deployed API proxies or shared flows on Edge,
* retrieving deployed proxies or shared flows from Edge,
* deleting proxy or shared flow definitions from Edge, and
* retreiving log messages from Node.js apps deployed to Edge.
* create or delete an API product in Edge
* create or delete a Developer in Edge
* create or delete a Developer Application in Edge
* create or delete a Cache resource in Edge
* create, retrieve or delete a KVM Map in Edge
* create, retrieve or delete a KVM Entry in Edge
* attach, detach, or get a FlowHook
* list, create, get, delete Roles
* assign, remove, verify Users for a Role
* get all Users in a Role

You need to be familiar with basic concepts and features of Apigee Edge such as API proxies, organizations, and environments.

Expand Down Expand Up @@ -70,9 +74,6 @@ trusted TLS certificate.
(optional) Limit for the maximum number of operations performed concurrently.
Currently this only affects file uploads in the `deploynodeapp` command. Defaults to 4.

`--json -j`
(optional) Formats the command's response as a JSON object.

`--organization -o`
(required) The name of the organization to deploy to. May be set as an environment variable APIGEE_ORGANIZATION.

Expand All @@ -93,37 +94,51 @@ Currently this only affects file uploads in the `deploynodeapp` command. Default

# <a name="reference"></a>Command reference and examples

* [deploynodeapp](#deploynodeapp)
* [deployhostedtarget](#deployhostedtarget)
* [deployproxy](#deployproxy)
* [undeploy](#undeploy)
* [listdeployments](#listdeployments)
* [fetchproxy](#fetchproxy)
* [getlogs](#getlogs)
* [delete](#delete)
* [deploySharedflow](#deploySharedflow)
* [undeploySharedflow](#undeploySharedflow)
* [listSharedflowDeployments](#listSharedflowDeployments)
* [fetchSharedflow](#fetchSharedflow)
* [deleteSharedflow](#deleteSharedflow)
* [createdeveloper](#createdeveloper)
* [deletedeveloper](#deletedeveloper)
* [createproduct](#createproduct)
* [deleteproduct](#deleteproduct)
* [createapp](#createapp)
* [deleteapp](#deleteapp)
* [addEntryToKVM](#addEntryToKVM)
* [assignUserRole](#assignUserRole)
* [attachFlowHook](#attachFlowHook)
* [createappkey](#createappkey)
* [createapp](#createapp)
* [createcache](#createcache)
* [createdeveloper](#createdeveloper)
* [createKVMmap](#createKVMmap)
* [createProduct](#createproduct)
* [createRole](#createRole)
* [createTargetServer](#createTargetServer)
* [deleteapp](#deleteapp)
* [deletecache](#deletecache)
* [createkvmmap](#createkvmmap)
* [addEntryToKVM](#addEntryToKVM)
* [getkvmmap](#getkvmmap)
* [getKVMentry](#getKVMentry)
* [deletekvmmap](#deletekvmmap)
* [deletedeveloper](#deletedeveloper)
* [deleteKVMentry](#deleteKVMentry)
* [createTargetServer](#createTargetServer)
* [deleteKVMmap](#deleteKVMmap)
* [deleteproduct](#deleteproduct)
* [deleteRole](#deleteRole)
* [deleteSharedflow](#deleteSharedflow)
* [deleteTargetServer](#deleteTargetServer)

* [delete](#delete)
* [deployhostedtarget](#deployhostedtarget)
* [deploynodeapp](#deploynodeapp)
* [deployproxy](#deployproxy)
* [deploySharedflow](#deploySharedflow)
* [detachFlowHook](#detachFlowHook)
* [fetchproxy](#fetchproxy)
* [fetchSharedflow](#fetchSharedflow)
* [getFlowHook](#getFlowHook)
* [getKVMentry](#getKVMentry)
* [getKVMmap](#getKVMmap)
* [getlogs](#getlogs)
* [getRoles](#getRoles)
* [getRole](#getRole)
* [getRolePermissions](#getRolePermissions)
* [getRoleUsers](#getRoleUsers)
* [getTargetServer](#getTargetServer)
* [listdeployments](#listdeployments)
* [listSharedflowDeployments](#listSharedflowDeployments)
* [listTargetServers](#listTargetServers)
* [removeUserRole](#removeUserRole)
* [setRolePermissions](#setRolePermissions)
* [undeploySharedflow](#undeploySharedflow)
* [undeploy](#undeploy)
* [verifyUserRole](#verifyUserRole)

## <a name="deploynodeapp"></a>deploynodeapp

Expand Down Expand Up @@ -701,14 +716,14 @@ When the `--organization` and `--environment` options are present, the operation

When the `--organization` and `--api` options are present, the operation will correspond to the API-scoped KVM.

### <a name="createkvmmap"></a>createkvmmap
### <a name="createKVMmap"></a>createKVMmap

Creates a map in the Apigee KVM with the given name.

#### Example
Create KVM map named "test-map"

apigeetool createkvmmap -u sdoe@example.com -o sdoe -e test --mapName test-map
apigeetool createKVMmap -u sdoe@example.com -o sdoe -e test --mapName test-map

#### Required parameters

Expand Down Expand Up @@ -771,15 +786,15 @@ for organization name, all of which are required.
`--api -n`
(optional) The API to target for an API-scoped KVM operation.

### <a name="getkvmmap"></a>getkvmmap
### <a name="getKVMmap"></a>getKVMmap

Retrieves an entire KVM map with all of its entries, by name.

#### Example

Get map named "test-map".

apigeetool getkvmmap -u sdoe@example.com -o sdoe -e test --mapName test-map
apigeetool getKVMmap -u sdoe@example.com -o sdoe -e test --mapName test-map

#### Required parameters

Expand Down Expand Up @@ -836,15 +851,15 @@ for organization name, all of which are required.
`--api -n`
(optional) The API to target for an API-scoped KVM operation.

### <a name="deletekvmmap"></a>deletekvmmap
### <a name="deleteKVMmap"></a>deleteKVMmap

Deletes an entire map from the Apigee KVM along with all of its entries.

#### Example

Delete map named "test-map".

apigeetool deletekvmmap -u sdoe@example.com -o sdoe -e test --mapName test-map
apigeetool deleteKVMmap -u sdoe@example.com -o sdoe -e test --mapName test-map

#### Required parameters

Expand Down Expand Up @@ -875,7 +890,7 @@ Deletes a single entry by name from an Apigee KVM map.

Delete entry named "test1" from the map named "test-map".

apigeetool deletekvmmap -u sdoe@example.com -o sdoe -e test --mapName test-map --entryName test1
apigeetool deleteKVMmmap -u sdoe@example.com -o sdoe -e test --mapName test-map --entryName test1

#### Required parameters

Expand Down Expand Up @@ -1046,7 +1061,7 @@ Delete a Developer in Edge
//developer delete failed
}) ;

## <a name="createproduct"></a>Create Product
## <a name="createProduct"></a>Create Product

Creates a new API Product in Edge

Expand Down
10 changes: 5 additions & 5 deletions lib/cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,11 @@ function runCommand() {
}
process.exit(6);
}
if (!opts.json && commandModule.format) {
console.log(commandModule.format(result));
} else {
console.log(JSON.stringify(result));
}

console.log(JSON.stringify(result));
// Raw
// console.log(result);

process.exit(0);
});
}
41 changes: 41 additions & 0 deletions lib/commands/assignUserRole.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/* jshint node: true */
'use strict';

var util = require('util');
var _ = require('underscore');

var defaults = require('../defaults');
var options = require('../options');
var command_utils = require('./command-utils')

var descriptor = defaults.defaultDescriptor({
roleName: {
name: 'Role Name',
required: true,
prompt: true
},
email: {
name: 'Developer email',
required: true,
prompt: true
}
});

module.exports.descriptor = descriptor;

module.exports.run = function(opts, cb) {
if (opts.debug) {
console.log('assignUserRole: %j', opts);
}

var formData = util.format('id=%s', encodeURIComponent(opts.email));
var uri = util.format('%s/v1/o/%s/userroles/%s/users', opts.baseuri, opts.organization, opts.roleName);
var requestOptions = {
uri: uri,
method:'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: formData,
json:true
}
command_utils.run('assignUserRole', opts,requestOptions,cb)
};
51 changes: 51 additions & 0 deletions lib/commands/attachFlowHook.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/* jshint node: true */
'use strict';

var util = require('util');
var _ = require('underscore');

var defaults = require('../defaults');
var options = require('../options');
var command_utils = require('./command-utils')

var descriptor = defaults.defaultDescriptor({
environment: {
name: 'Environment',
shortOption: 'e',
required: true
},
flowHookName: {
name: 'Flow hook name',
required: true,
prompt: true
},
sharedFlowName: {
name: 'Shared Flow name',
required: true,
prompt: true
}
});

module.exports.descriptor = descriptor;

module.exports.run = function(opts, cb) {
if (opts.debug) {
console.log('attachFlowHook: %j', opts);
}
var payload = {
"continueOnError" : true,
"sharedFlow" : opts.sharedFlowName
}
if(opts.targetSSL){
payload.sSLInfo = {enabled: true}
}

var uri = util.format('%s/v1/o/%s/e/%s/flowhooks/%s', opts.baseuri, opts.organization, opts.environment, opts.flowHookName);
var requestOpts = {
uri: uri,
method:'POST',
body: payload,
json:true
}
command_utils.run('attachFlowHook',opts, requestOpts, cb)
};
2 changes: 1 addition & 1 deletion lib/commands/command-utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ module.exports.run = function(command, opts, requestOpts,done){
var jsonBody = body
if(err){
done(err)
}else if (res.statusCode == 200 || res.statusCode == 201) {
}else if (res.statusCode == 200 || res.statusCode == 201 || res.statusCode == 204) {
if (opts.verbose) {
console.log(command + ' successful');
}
Expand Down
Loading