This repository has been archived on 2020-01-20. You can view files and clone it, but cannot push or open issues or pull requests.
node-spearhead/CHANGES.md

527 lines
18 KiB
Markdown
Raw Normal View History

2015-08-25 21:49:46 +03:00
# node-triton changelog
Known issues:
- `triton ssh ...` disables ssh ControlMaster to avoid issue #52.
## not yet released
## 4.14.0
2016-06-09 00:47:27 +03:00
- [#130] Include disabled images when using an image cache (e.g. for filling in
image name and version details in `triton ls` output.
2016-06-09 00:47:27 +03:00
2016-06-09 00:47:20 +03:00
## 4.13.0
2016-06-08 00:19:57 +03:00
- [#120] Don't fail `triton instance list` if the retrieval of *image* info
(retrieved to get image name and version, as a bonus) fails with an
authorization error -- in case it is an RBAC failure where a subuser can
ListMachines, but not ListImages.
- [#113] *Usage* errors now some "error help", including option or command
synopses. Some examples (the new thing is marked with `>`):
- Command synopses when argument errors:
2016-06-09 00:49:52 +03:00
```
$ triton create
triton instance create: error (Usage): incorrect number of args
> usage: triton instance create [OPTIONS] IMAGE PACKAGE
```
- Option synopsis with option errors:
2016-06-09 00:49:52 +03:00
```
$ triton image ls --bogus
triton image ls: error (Option): unknown option: "--bogus"
> usage: triton image ls [ --help | -h ] [ --all | -a ] [ -H ] [ -o field1,... ]
> [ --long | -l ] [ -s field1,... ] [ --json | -j ] ...
```
- Suggested command name misspellings:
2016-06-09 00:49:52 +03:00
```
$ triton in
triton: error (UnknownCommand): unknown command: "in"
> Did you mean this?
> info
> inst
```
2016-06-08 00:19:57 +03:00
2016-06-08 00:19:51 +03:00
## 4.12.0
2016-04-22 23:10:11 +03:00
- [#120] `triton -r,--role ROLE ...` option to take up an RBAC role(s).
2016-04-22 23:10:11 +03:00
2016-04-22 23:09:54 +03:00
## 4.11.0
2016-04-12 03:06:36 +03:00
- [#112] Fix `triton completion`, broke a while back.
- [#111] `triton env --unset,-u` option to emit environment commands to *unset*
relevant envvars.
- Unhide `triton env` from `triton --help` output.
2016-04-12 03:06:36 +03:00
2016-04-12 03:06:22 +03:00
## 4.10.0
2016-03-28 23:14:33 +03:00
- [#82] Affinity (a.k.a. locality hints) support for instance creation, e.g.:
2016-03-28 23:14:33 +03:00
# Use same server as instance 'db0':
triton create -a instance==db0 ...
triton create -a db0 ... # shortcut for same thing
# Use different server than instance 'db0':
triton create -a 'instance!=db0' ...
# *Attempt* to use same server as instance 'db0', but don't fail
# if cannot. This is called a "non-strict" or "soft" rule.
triton create -a instance==~db0 ...
# *Attempt* to use a different server than instance 'db0':
triton create -a 'instance!=~db0' ...
"Affinity" here refers to providing rules for deciding on which server
a new instance should by provisioned. Rules are in terms of existing
instances. As a shortcut, 'inst' can be used in place of 'instance'
above (e.g. `triton create -a 'inst!=db0' ...`).
2016-03-28 23:14:33 +03:00
2016-03-28 23:02:21 +03:00
## 4.9.0
2016-03-19 01:54:42 +02:00
- [#46] Initial support for `triton` helping setup and manage configuration for
using `docker` against a Triton datacenter. Triton datacenters can provide
a Docker Remote API endpoint against which you can run the normal `docker`
client. See <https://www.joyent.com/triton> for and overview and
<https://github.com/joyent/sdc-docker> for developer details.
- `triton profile create` will now setup the profile for running Docker,
if the Triton datacenter provides a docker endpoint. The typical flow
would be:
$ triton profile create
name: foo
...
$ triton profile set foo # make foo my default profile
$ eval "$(triton env --docker)" # set 'DOCKER_' envvars
$ docker info
This profile setup for Docker requires making requests to the
CloudAPI endpoint which can fail (e.g. if CloudAPI is down, credentials
are invalid, etc.). You can use the `--no-docker` option to skip
the Docker setup part of profile creation.
- For existing Triton CLI profiles, there is a new `triton profile
docker-setup [PROFILE]`.
$ triton profile docker-setup
$ eval "$(triton env --docker)"
$ docker info
- `triton env` will now emit commands to setup `DOCKER_` envvars. That
can be limited to just the Docker-relevant env via `triton env --docker`.
2016-03-12 01:26:36 +02:00
2016-03-12 01:26:31 +02:00
## 4.8.0
2016-03-09 19:23:48 +02:00
- #103 `triton ip <inst>` to output the instance's primaryIp
- #52 Workaround for `triton ssh ...`. In version 4.6.0, `triton ssh ...`
interactive sessions were broken. This version reverts that change and adds
a workaround for #52 (by disabling ControlMaster when spawning `ssh`).
See <https://github.com/joyent/node-triton/issues/52> for details.
- #97 `triton profile set -` to set the *last* profile as current.
- PUBAPI-1266 Added `instance enable-firewall` and `instance disable-firewall`
2016-03-09 19:23:48 +02:00
2016-03-09 19:23:43 +02:00
## 4.7.0
**Known issue: `triton ssh` interactive sessions are broken.
Upgrade to v4.7.1.**
- #101 Bash completion for server-side data: instances, images, etc.
Bash completion on TAB should now work for things like the following:
`triton create <TAB to complete images> <TAB to complete packages`,
`triton inst tag ls <TAB to complete instances>`. Cached (with a 5 minute
TTL) completions for the following data are supported: instances, images,
packages, networks, fwrules, account keys.
See `triton completion --help` for adding/updating Bash completion.
- #99 `triton profile set ...` alias for `set-current`
2016-03-02 10:07:22 +02:00
2016-03-02 10:07:14 +02:00
## 4.6.0
2016-02-15 20:23:18 +02:00
**Known issue: `triton ssh` interactive sessions are broken.
Upgrade to v4.7.1.**
- #98 `triton inst get ID` for a deleted instance will now emit the instance
object and error less obtusely. This adds a new `InstanceDeleted` error code
from `TritonApi`.
- PUBAPI-1233 firewalls: `triton fwrule ...`
- PUBAPI-1234 instance snapshots: `triton inst snapshot ...`
- #52 Fix 'triton ssh ...' stdout/stderr to fully flush with node >= 4.x.
2016-02-15 20:23:18 +02:00
2016-02-15 20:23:10 +02:00
## 4.5.2
2016-02-12 21:17:36 +02:00
2016-02-15 20:12:10 +02:00
- #95 Fix breakage of `triton image create` in v4.5.0. (By Kris Shannon.)
- #94, #93 `triton inst create ...` is broken if "images.json" cache file
is missing. (By Kris Shannon.)
2016-02-12 21:17:36 +02:00
2016-02-12 21:17:07 +02:00
## 4.5.1
2016-02-11 19:57:00 +02:00
- #92 `triton` CLI should summarize `err.body.errors` from CloudAPI
Per <https://github.com/joyent/eng/blob/master/docs/index.md#error-handling>,
CloudAPI error response will sometimes have extra error details to show.
2016-02-11 19:57:00 +02:00
2016-02-11 19:56:55 +02:00
## 4.5.0
2016-02-11 00:45:53 +02:00
- #88 'triton inst tag ...' for managing instance tags.
2016-02-11 00:45:53 +02:00
2016-02-11 00:45:34 +02:00
## 4.4.4
2016-02-03 08:03:47 +02:00
- #90 Update sshpk and smartdc-auth to attempt to deal with multiple package
inter-deps.
2016-02-03 08:03:47 +02:00
2016-02-03 08:03:37 +02:00
## 4.4.3
2016-02-02 21:06:05 +02:00
- #86 Ensure `triton profile ls` and `triton profile set-current` work
when there is no current profile.
2016-02-02 21:06:05 +02:00
2016-02-02 21:05:50 +02:00
## 4.4.2
2016-01-28 23:45:26 +02:00
- Support `triton.createClient(...)` creation without requiring a
`configDir`. Basically this then fallsback to a `TritonApi` with the default
config.
2016-01-28 23:45:26 +02:00
2016-01-28 23:45:16 +02:00
## 4.4.1
2016-01-26 09:48:21 +02:00
- #83, #84 Fix running `triton` on Windows.
Note: Triton config is stored in "%APPDATA%/Joyent/Triton/..." on Windows,
"~/.triton/..." on other platforms.
2016-01-26 09:48:21 +02:00
2016-01-26 09:48:10 +02:00
## 4.4.0
2016-01-20 00:45:08 +02:00
- #78 `triton image delete IMAGE`
- #79 Fix `triton instance get NAME` to make sure it gets the `dns_names` CNS
field.
- PUBAPI-1227: Note that `triton image list` doesn't include Docker images, at
least currently.
2016-01-20 00:45:08 +02:00
2016-01-20 00:44:56 +02:00
## 4.3.1
2016-01-19 22:32:37 +02:00
- #77 triton create error in v4.3.0
2016-01-19 22:32:37 +02:00
2016-01-19 22:32:28 +02:00
## 4.3.0
2016-01-18 21:58:59 +02:00
**Bad release. Use >=4.3.1.**
- #76 `triton image create ...` and `triton image wait ...`
- #72 want `triton image` to still return image details even when it is not in 'active' state
2016-01-18 21:58:59 +02:00
2016-01-18 21:58:47 +02:00
## 4.2.0
2016-01-14 22:19:54 +02:00
- Bash completion: Add completion for *args* to `triton account update <TAB>`.
This isn't perfect because a space is added after completion of "FIELD=",
but hopefully is helpful.
- #75 `triton account update ...`
2016-01-14 22:19:54 +02:00
2016-01-14 22:19:29 +02:00
## 4.1.0
2016-01-12 20:28:11 +02:00
2016-01-14 19:22:13 +02:00
- Unhide `triton completion` so hopefully more find it and use it.
2016-01-14 22:18:59 +02:00
- node-triton#73 `triton instance list --credentials` to include
"metadata.credentials" in instance listing.
2016-01-13 22:20:58 +02:00
- node-triton#35 More easily distinguish KVM and LX and Docker images and
instances.
In PUBAPI-1161 CloudAPI (v8.0.0) started exposing IMG.type, INST.brand and
INST.docker. One of the main issues for users is that telling KVM ubuntu
from LX ubuntu is confusing (see also joyent/smartos-live#532).
tl;dr:
- `triton image list` default output now includes the `type` instead of
`state`. The `state` column is still in output with `-l`, `-j`,
`-o state`.
- `triton instance list` default output now includes a `flags` column
instead of `primaryIp`. The 'D' and 'K' flags identify Docker and KVM
instances.
- `triton instance list -l` includes the brand.
Default output examples showing the various cases (and the attempt to
stay within 80 columns):
```bash
$ triton imgs
SHORTID NAME VERSION FLAGS OS TYPE PUBDATE
1bd84670 minimal-64-lts 14.4.2 P smartos zone-dataset 2015-05-28
b67492c2 base-64-lts 14.4.2 P smartos zone-dataset 2015-05-28
ffe82a0a ubuntu-15.04 20151105 P linux lx-dataset 2015-11-05
8a1dbc62 centos-6 20160111 P linux zvol 2016-01-11
$ triton insts
SHORTID NAME IMG STATE FLAGS AGE
da7c6edd cocky_noyce 3d996aaa running DF 10m
deedeb42 ubu0 ubuntu-15.04@20151105 running - 9m
aa9ccfda mini2 minimal-64-lts@14.4.2 running - 9m
e8fc0b96 centi0 centos-6@20160111 running K 8m
```
- Filtering instances on `docker=true`:
```bash
$ triton insts docker=true
SHORTID NAME IMG STATE FLAGS AGE
da7c6edd cocky_noyce 3d996aaa running DF 13m
```
2016-01-12 20:28:11 +02:00
2016-01-12 20:28:03 +02:00
## 4.0.1
2016-01-10 21:49:44 +02:00
2016-01-12 20:27:46 +02:00
- Add `triton env -t` to be able to emit a shell environment to configure `triton` itself.
This allows one to have the following Bash function to select a Triton profile for
`triton` and node-smartdc tooling:
function triton-select { eval $(triton env $1); }
2016-01-10 21:49:44 +02:00
2016-01-10 21:49:33 +02:00
## 4.0.0
2015-12-31 01:25:12 +02:00
- [backwards incompat] #66 New consistent `triton` CLI style. See [the
issue](https://github.com/joyent/node-triton/issues/66) for discussion.
The major changes is that where some sub-commands used to be some
flavour of:
2016-01-05 07:53:52 +02:00
triton things # list all the things
triton thing ID # get a thing
triton thing -a ID # create a new thing
Now commands are consistently:
triton thing list # list all the things
triton thing get ID # get a thing
triton thing create ... # create a new thing
...
The most annoying incompatility is the need for "get" to
get a thing. E.g.:
BEFORE AFTER
triton img blah triton img get blah
triton inst web0 triton inst get web0
2015-12-31 01:25:12 +02:00
For *listing* things, there is typically a shortcut with
the old form, e.g. `triton images` is a shortcut for
`triton image list`.
2015-12-31 01:25:12 +02:00
Currently all of the CLI *except* the experimental `triton rbac ...`
is converted to the new consistent style.
- [backwards incompat] `triton whoami` was dropped. This used to be a shortcut
for `triton account get`. It could possibly come back.
2016-01-10 21:46:07 +02:00
- *Much* improved [Bash
completion](https://github.com/joyent/node-triton#bash-completion). See
`triton completion -h` for notes on how to install.
- Add the ability to create a profile copying from an existing profile,
via `triton profile create --copy NAME`.
2015-12-31 01:25:12 +02:00
- `triton key add` was added (<https://apidocs.joyent.com/cloudapi/#CreateKey>).
2015-12-31 01:25:12 +02:00
2015-12-31 20:05:50 +02:00
## 3.6.0
2015-12-31 02:13:46 +02:00
- #67 Add `triton create --network,-N NETWORK ...` option for specifying
networks for instance creation. "NETWORK" is a network id, name, or
short id; or a comma-separated array of networks.
2015-12-31 02:13:46 +02:00
2015-12-31 02:13:38 +02:00
## 3.5.0
2015-12-30 01:14:35 +02:00
- #67 Add `triton create --tag|-t ...` option for adding tags on instance creation.
E.g. `triton create -n NAME -t foo=bar -t @my-tags-file.json IMAGE PACKAGE`.
2015-12-30 01:14:35 +02:00
2015-12-30 01:14:25 +02:00
## 3.4.2
2015-12-16 21:01:03 +02:00
- #63 "triton images" with a filter should not be cached.
- #65 Fix `triton profile(s)` handling when the user has no profiles yet.
2015-12-16 21:01:03 +02:00
2015-12-16 21:00:56 +02:00
## 3.4.1
2015-12-08 23:56:01 +02:00
- #60 Display `vcpus` in `triton packages` output.
2015-12-09 22:02:22 +02:00
- Add `-d,--data <data>` option to `triton cloudapi`.
- Fix `triton rbac role ROLE`. Also get that command to have a stable order for the
displayed fields.
2015-12-08 23:56:01 +02:00
2015-12-08 23:55:52 +02:00
## 3.4.0
2015-12-07 21:47:55 +02:00
- Improvements for using node-triton as a module. E.g. a simple example:
var triton = require('triton');
var client = triton.createClient({profileName: 'env'});
client.listImages(function (err, imgs) {
console.log(err);
console.log(imgs);
});
See the README and "lib/index.js" for more info.
2015-12-07 21:47:55 +02:00
2015-12-07 21:47:46 +02:00
## 3.3.0
2015-12-02 21:19:21 +02:00
- #59 CLI options to `triton create` to add metadata on instance creation:
- `triton create -m,--metadata KEY=VALUE` to add a single value
- `triton create -m,--metadata @FILE` to add values from a JSON
or key/value-per-line file
- `triton create -M,--metadata-file KEY=FILE` to set a key from a file
- `triton create --script FILE` to set the special "user-script" key
from a file
2015-12-02 21:19:21 +02:00
2015-12-02 21:19:10 +02:00
## 3.2.0
2015-11-25 02:40:55 +02:00
- #58 `triton --act-as=ACCOUNT ...` for an operator account to auth as
themself, but operator on another account's resources. Note that operator
accesses like this are audited on the CloudAPI server side.
- `triton --accept-version VER` hidden top-level option for development. This
allows calling the target cloudapi with the given value for the
"Accept-Version" header -- which is how CloudAPI does API versioning.
By default `triton` is coded to a particular cloudapi version range, so
forcing a different version *could* result in breaking in the triton client
code that handles the response. IOW, this is just a tool for developers
of this Triton client and CloudAPI itself.
2015-11-25 02:40:55 +02:00
2015-11-25 02:40:47 +02:00
## 3.1.0
2015-11-25 02:40:17 +02:00
- New (hidden for now, i.e. experimental) `triton env ...` to dump
`eval`able shell commands for
[node-smartdc](https://github.com/joyent/node-smartdc) environment setup for
a given Triton CLI profile. E.g.:
eval $(triton env east1)
sdc-listmachines
I think this should grow to support setting up Docker env as well.
2015-11-24 22:34:53 +02:00
- #54 `triton rbac role-tags` for now can't be hidden (as long we have the
need to role-tag raw resource URLs like '/my/images').
- #54 `triton rbac apply --dev-create-keys-and-profiles` for
experimenting/dev/testing to quickly generate and add user keys and setup
Triton CLI profiles for all users in the RBAC config.
- #54 RBAC support, see <https://docs.joyent.com/public-cloud/rbac> to start.
- `triton rbac info` improvements: better help, use brackets to show
non-default roles.
- `triton rbac reset`
- change `triton rbac user USER` output a little for the 'keys' (show
the key fingerprint and name instead of the key content), 'roles',
and 'default_roles' fields.
- #54 *Drop* support for shortIds for `triton rbac {users,roles,policies}`
commands. They all have unique *`name`* fields, just use that.
- #54 `triton rbac apply` will implicitly look for a user key file at
"./rbac-user-keys/$login.pub" if no `keys` field is provided in the
"rbac.json" config file.
- Change default `triton keys` and `triton rbac keys` output to be tabular.
Otherwise it is a little obtuse to see fingerprints (which is what currently
must be included in a profile). `triton [rbac] keys -A` can be used to
get the old behaviour (just the key content, i.e. output appropriate
for "~/.ssh/authorized\_keys").
2015-11-18 23:54:20 +02:00
2015-11-18 23:52:58 +02:00
## 3.0.0
- #54 RBAC support, see <https://docs.joyent.com/public-cloud/rbac> to start.
- [Backward incompatible.] The `triton` CLI option for the cloudapi URL has
changed from `--url,-u` to **`--url,-U`**.
- Add `triton --user,-u USER` CLI option and `TRITON_USER` (or `SDC_USER`)
environment variable support for specifying the RBAC user.
- `triton profiles` now shows the optional `user` fields.
- A (currently experimental and hidden) `triton rbac ...` command to
house RBAC CLI functionality.
- `triton rbac users` to list all users.
- `triton rbac user ...` to show, create, edit and delete users.
- `triton rbac roles` to list all roles.
- `triton rbac role ...` to show, create, edit and delete roles.
- `triton rbac policies` to list all policies.
- `triton rbac policy ...` to show, create, edit and delete policies.
- `triton rbac keys` to list all RBAC user SSH keys.
- `triton rbac key ...` to show, create, edit and delete user keys.
- `triton rbac {instance,image,network,package,}role-tags ...` to list
and manage role tags on each of those resources.
- `triton rbac info` will dump a summary of the full current RBAC
state. This command is still in development.
- `triton rbac apply` will synchronize a local RBAC config (by default it
looks for "./rbac.json") to live RBAC state. Current the RBAC config
file format is undocumented. See "examples/rbac-\*" for examples.
- #55 Update of smartdc-auth/sshpk deps, removal of duplicated code for
composing Authorization headers
2015-10-22 04:11:17 +03:00
2015-10-22 04:11:07 +03:00
## 2.1.4
2015-10-14 23:28:39 +03:00
- #51: Update deps to get dtrace-provider 0.6 build fix for node v4.2.x.
- #49: `triton create ... --firewall` to enable [Cloud
Firewall](https://docs.joyent.com/public-cloud/network/firewall).
2015-10-14 23:28:39 +03:00
2015-10-14 23:28:16 +03:00
## 2.1.3
2015-10-14 00:41:22 +03:00
2015-10-14 23:28:09 +03:00
- #44 'triton rm' alias for delete
- #43 `triton profile ...` doesn't use the profile from `TRITON_PROFILE` envvar
2015-10-14 00:40:20 +03:00
## 2.1.2
2015-10-08 01:51:29 +03:00
2015-10-08 09:04:09 +03:00
- #41 Add compatibility with ed25519 keys in ssh-agent
- #42 Tools using sshpk should lock in an exact version
2015-10-08 01:51:29 +03:00
2015-10-08 01:51:20 +03:00
## 2.1.1
2015-10-07 09:33:40 +03:00
- #40 Update smartdc-auth so that newer OpenSSH `ssh-keygen` default
fingerprint formats for setting `keyId` work.
- #39 Test suite: Change the test config 'destructiveAllowed' var to
'writeActionsAllowed'.
2015-10-07 09:33:40 +03:00
2015-10-07 09:33:29 +03:00
## 2.1.0
2015-10-01 01:14:41 +03:00
- Errors and exit status: Change `Usage` errors to always have an exit status
of `2` (per common practice in at least some tooling). Add `ResourceNotFound`
error for `triton {instance,package,image,network}` with exit status `3`.
This can help tooling (e.g. the test suite uses this in one place). Add
`triton help` docs on exit status.
- Test suite: Integration tests always require a config file
(either `$TRITON_TEST_CONFIG` path or "test/config.json").
Drop the other `TRITON_TEST_*` envvars.
2015-10-01 01:14:41 +03:00
2015-10-01 01:14:33 +03:00
## 2.0.0
- Changed name to `triton` npm package, graciously given up by
[suguru](https://www.npmjs.com/~suguru) from his
<https://github.com/ameba-proteus/node-triton> project. <3
The latest previous release of the triton package was 1.0.7,
so we'll separate with a major version bump for *this* triton
package.
## 1.0.0
Initial release as `joyent-triton` npm package.