Changelog
What changed in nipa
Every release of nipa, newest first. Update with npm install -g nipa-cli.
- Add
nipa db inspect, which takes a database cluster's name or ID and answers whether it's healthy and how to reach it. It shows the engine and version, status, health and when Trove last checked it, flavor with its vCPUs and RAM, storage, zone, address with the engine's default port, allowed CIDRs, replicas, whether the general and slow query logs are on, and the 5 newest backups. Its last line says the database is healthy and where to connect, or what needs attention, such as a primary that isn't active or a latest backup that failed.--jsonprints all of it underdatabase, with every backup, the engine'sdefaultPortand aproblemslist of what's wrong and where.nipa db ls --jsongives each primaryid,zone,vcpus,ramMb,allowedCidrsandhealthCheckedAttoo, and every status list colors completed backups green and failed ones red. 22d34a3 nipa db lsshows a database's internal address when it has no external IP. The Address column was blank for these, and--jsongaveexternalAddressas""instead ofnull. 22d34a3- Add
nipa doctor, which checks your setup in one go and says what to fix: the config files, which profile the run uses and why, whether its Keystone and Space API answer and how fast, the session and when it expires, whether Keystone and the Space API accept its token, the folder's link,openstackandterraform, and a newer nipa from the last update check. It changes nothing and never asks for a password, so it works in scripts.--jsonprints each check'sid,status,summaryandhint. It exits with code 1 when a check fails, and a warning doesn't change the exit code. f31bf3b - Add
nipa flavor ls, which lists the flavors a server can have, smallest first, with their vCPUs, RAM and type. The Space portal calls them machine types, sonipa machine-typesdoes the same, and so doesnipa flavors. The ones only database clusters use don't show. In a pipe, it prints one flavor name per line. 49bc449 - Add
nipa k8s ls, which lists the Kubernetes clusters in your project with their Kubernetes version, nodes, active node count and age.nipa os coecan't find Magnum on Nipa Cloud production, so nipa finds each cluster through the servers Magnum made for it.nipa kubernetesandnipa coedo the same.nipa server ls --jsongives each Kubernetes node itsversiontoo. 49bc449 - Add
nipa lb inspect, which takes a load balancer's name or ID and shows why it doesn't serve. It prints the load balancer's status, health, virtual IP, external IP and flavor, then each listener, backend group and member with its status and health, and marks in red each part that isn'tACTIVEandONLINE. The last line names what stops it, such as2 of 3 members are down, or says that every part is healthy.--jsonprints the whole load balancer with its listeners, backend groups and members. Tab completes load balancer names afternipa lb inspect. 61c0eed - Add
nipa network ls, which lists the networks your project can use with their status, type, zone and age. A VPC network is one of your project's private networks, and an external network is a shared pool of external IPs.nipa networksdoes the same. 49bc449 - Add
nipa link [project], like the Vercel CLI'svercel link, which saves the profile and a project in.nipa/project.json. Commands in that folder and the folders below it use them, so a Terraform folder for staging needs no-P staging, andnipa switchin other folders doesn't change it. nipa exchanges the token for the linked project before each command and doesn't save it.nipa unlinkremoves the link, andnipa whoami --jsongiveslink. 3c4252d - Add
nipa open, which opens the profile's Space portal in your browser, likevercel open.nipa open server,volume,network,sg,lbordbopens that list, and a name or ID after it opens that resource's page. In a pipe, or with--url, nipa prints only the URL and doesn't open a browser. The portal opens the project you last used in it, because a URL can't pick one. 51f4c90 - Tab completion after
nipa oscompletes server names afterserver show,stop,start,deleteand the other commands that take only servers, and the names after--flavor,--imageand--network. nipa reads them from the Space API, keeps them for a minute, and never asks for a password on a Tab press. 92bda92 - Add
nipa quota ls, which shows each quota of your project, such as servers, vCPUs, RAM and volumes, by group, with how much it uses, its limit and the percent used. A quota at 80% or more shows in yellow and one at its limit in red, and a note counts them, so you can see why a create failed or how much room is left.--jsonprints each quota's group, name, used, limit and unit, and a pipe gets one tab-separated line per quota with its unit.nipa quota,nipa quotasandnipa limitsdo the same. 0cb45a4 - Add
nipa login --remember, which saves your password in the macOS Keychain, or withsecret-toolon Linux, so later logins ask only for an OTP code. Keystone has no refresh token, so a session still lasts 24 hours. When Keystone refuses a saved password, nipa deletes it and asks.nipa logoutandnipa profile rmdelete the saved password. Commands that use a session with less than 30 minutes left print a note with the login command first. fe436ef - Add
nipa server historyandnipa server logsto find out why a server failed.history, orevents, lists the actions on a server, newest first, with who asked, the result and the request ID.logsprints the server's console log, cloud-init output included, and--tail 20keeps the last 20 lines. A server that never booted has no console log, so nipa says so and namesnipa server history.nipa server inspectnow shows Nova's task while the server is busy, whether it's locked, and its last action, such ascreate failed 26m ago by Ann, and nameshistoryandlogsfor a server in Error.--jsonprints all of it, andinspect --jsonaddstaskState,lockedandlastActionto the server. 9df4221 - Add
nipa server inspect,start,stopandrestart, which take a server's name or ID.inspectshows the server's flavor with its vCPUs and RAM, zone, addresses, volumes and security groups, and--jsonprints them.start,stopandrestartcall the Space API, like the Space portal's buttons, then wait until the server finishes.stopandrestartask first, and--yesskips the question.--no-waitreturns once the Space API takes the action, and--timeout 10mwaits longer than the default 5 minutes. Tab completes server names after these commands.nipa server ls --jsongives each servervcpus,ramMb,zone,volumesandsecurityGroupstoo. 9afaa9b nipa sg inspect <Tab>completes security group names. 340528d- Add
nipa sg inspect, which takes a security group's name or ID and shows its description, the servers that use it with their addresses, and its inbound and outbound rules. Each rule shows its protocol, ports, and the CIDR or security group it allows by name. A note says when an inbound rule opens SSH, RDP or a database port to the internet.--jsonprints the group in the shapenipa sg ls --jsonuses, and adds each rule'sremoteGroupNameand the group'sservers. 340528d - Add
nipa sg ls, which lists the security groups in your project with their inbound and outbound rule counts, age and description.--jsonprints each rule's direction, protocol, ports and remote.nipa security-groupandnipa security-groupsdo the same. 49bc449 - Add
nipa volume ls, which lists the block storage volumes in your project with their status, size, type, the server each one is attached to, and age.nipa volumesdoes the same. Volume statuses such asin-useandcreatingget the same colors as server statuses, and read as "In use" and "Creating". 49bc449
- Add
- Add
nipa completion --install, which saves the tab completion script where bash, zsh or fish loads it, so the shell doesn't run nipa each time it starts. nipa rewrites the saved script when its version changes, so new commands complete after an update.nipa completionwithout a shell uses the one in$SHELL. 197c333 nipa server lsmarks the servers that a Kubernetes cluster made, such ask8s-control-plane-1 (Kubernetes master), from the Magnum tags the portal reads too.--jsongives each serverkubernetes, which isnullfor a server you made, or the cluster'sclusterIdand the node'srole. The troubleshooting page explains whynipa os coeand other commands can't find their service on production. 47797cd- Give production's Space API only to profiles on production's Keystone. In 0.1.4, a staging profile got production's Space API, which refused its token, so
nipa server lssaid the session had expired. nipa now drops that URL from such profiles.nipa profile add --space-urltakes the Space portal URL, such ashttps://portal-stg-epc.nipa.cloud, saves its/api, and checks that it answers. With another Keystone and a terminal,profile addasks for the portal URL. Without one,server ls,db ls,lb lsandip lssay the profile has no Space API URL before they ask for a login. A profile that 0.1.4 saved with a portal URL gets its/apiwhen nipa loads it, and a Space API URL that answers with a web page gets an error that says so. 587c9ac
- Add
- Add
nipa db ls, which lists the managed database clusters in your project with their engine, status, address, flavor and age.nipa server lsdoesn't show them. 3adea28 - Add
nipa ip ls, which lists the external IPs in your project with their status, the internal IP each one forwards to, zone and name. An IP without an internal IP isn't attached to anything. 3adea28 - Add
nipa lb ls, which lists the load balancers in your project with their status, health, virtual IP, listener count and age. 3adea28 nipa server lscalls Nipa Cloud's Space API athttps://space.nipa.cloud/apion port 443, instead of the compute endpoint in Keystone's catalog on port 8774, which many networks can't reach. A profile keeps its Space API URL inspaceUrl, andnipa profile add --space-urlsets it.nipa server ls --jsonno longer hasnetworkon each address, because the Space API doesn't name it. nipa no longer reads Keystone's catalog or saves its endpoints inauth.json. 49a0027
- Add
nipa loginandnipa switchget a token on Nipa Cloud again. Nipa's gateway drops the connection for a token without a service catalog, so nipa now asks for your project ID on a first login, takes it from--project, or uses the project from your last login. 6d2d00f
nipa loginasks for your OTP code on Nipa Cloud again. Nipa's gateway sends 401 responses with an empty body, so nipa couldn't read the account's MFA rules and printed an emptyError:instead. 15f0ce5
- Install nipa from npm with
npm install -g nipa-cli. The package runs on Node.js 22.13 or later, and the binaries on GitHub releases still need nothing else installed. 004f686
- Install nipa from npm with
nipa profile rm --helpand every other subcommand print their own help page, andnipa server --jsonrunsnipa server ls --json. Usage errors name the command and show its usage line, and an extra argument, as innipa switch Beta extra, exits with code 2. 93c35d9- Add
--debug, orNIPA_DEBUG=1, to log the method, URL, status and time of each HTTP request. 268f3ff - First release:
nipa loginwith a password and OTP code,logout,whoami,switch,env,exec,os,tfandcompletionfor bash, zsh, fish and PowerShell. ab32643 nipa loginsends your password first and asks for an OTP code only when Keystone asks for one. After a wrong code, it asks for the next one, up to 3 times, without asking for the password again. 268f3ff- Add
nipa profileto keep a session for more than one Keystone, such as staging, and-P <name>orNIPA_PROFILEto pick one for a command. Files from nipa 0.1 load as theprodprofile. 268f3ff - Add
nipa server lsto list the servers in your project with their status, address and flavor, without the OpenStack client. 503fa77 nipachecks GitHub for a newer release at most once a day and prints a notice when there is one. SetNIPA_NO_UPDATE_CHECKto turn it off. 268f3ffnipashows its prompts, spinners and results in the Vercel CLI style, groupsnipa --helpby task, and completes global options and thenipa profilesubcommands in every shell. 268f3ff- nipa stops reading its own options at
--. Innipa switch -- -h, the command gets-hand nipa doesn't print its help. 268f3ff - Tab completion after
nipa oslists openstack's commands and options in bash, zsh, fish and PowerShell. The OpenStack client ships completion only for bash, sonipa osused to complete file names in the other shells. 268f3ff - nipa's
>messages, such as> Logging in to prod, no longer print in red in a terminal. 503fa77 - A mistyped command name gets a suggestion, such as "Did you mean
nipa login?". 268f3ff
The same list is in the releases on GitHub, with a binary for each platform.
