Feature
-
Support parsing Mellanox 3.6.8010 IB partition output
-
Add yoyo-migrations to handle database schema changes
-
Refactor the storage controller commands to use the new scoping scheme
There are now scope level commands for
storage controller
:stack add [appliance, environment, host, os] storage controller stack list [appliance, environment, host, os] storage controller stack remove [appliance, environment, host, os] storage controller
These versions of the commands operate on the global scope:
stack add storage controller stack list storage controller stack remove storage controller
-
Refactor Mellanox7800 firmware functions to be more robust
-
[IB] Sync the hostname of the switch.
If the 'name' field of the switch's mgmt0 interface is set, that name will be used. Otherwise
use the name in Stacki. -
Refactor the route comands to use the new scoping scheme
-
Better Shadow Attributes
Split the shadow attributes out of the
cluster
database and into a
their ownshadow
database. This is the start of a locked down secrets
database where host keys and other things can be stored. -
Pretty print when output_format=json
-
Added a new 'stack verify xml' command to report XML errors across multiple node, graph files.
'stack list host profile' also has better XML parse error reporting now. -
Refactor the firewall comands to use a new scoping scheme.
Bugfix
-
Wait for the quit command to run before terminating the process
-
[IB] Make setting the subnet manager more reliable.
-
Under redhat, device routes need to output the interface
-
Fix ask() to pass along kwargs so things like timeout work
-
SLES11 use chkconfig for message queue
- Call out libffi-devel for installation (zmq needs this)
- Use
os.version
notrelease
-
[IB] Properly parse partition members with GUID=ALL
-
Missed a spot in the Vagrantfile which broke the
--use-src
flag in KVM -
Make sure commands using
Command::command
get the correct usage message on exception
Breaking Change
There is new a database schema for the storage_controller table. This SQL will update an exist
ing DB, but you will lose your existing controller configurations in the process:
DROP TABLE IF EXISTS storage_controller;
CREATE TABLE storage_controller (
id INT AUTO_INCREMENT PRIMARY KEY,
scope_map_id INT NOT NULL,
enclosure INT NOT NULL,
adapter INT NOT NULL,
slot INT NOT NULL,
raidlevel VARCHAR(16) NOT NULL,
arrayid INT NOT NULL,
options VARCHAR(512) NOT NULL,
INDEX (enclosure, adapter, slot),
FOREIGN KEY (scope_map_id) REFERENCES scope_map(id) ON DELETE CASCADE
);
There is new a database schema for the routes. This SQL
will update an existing DB, but you will lose your existing
routes in the process:
DROP TABLE IF EXISTS global_routes;
DROP TABLE IF EXISTS os_routes;
DROP TABLE IF EXISTS appliance_routes;
DROP TABLE IF EXISTS node_routes;
DROP TABLE IF EXISTS environment_routes;
CREATE TABLE routes (
id INT AUTO_INCREMENT PRIMARY KEY,
scope_map_id INT NOT NULL,
address VARCHAR(32) NOT NULL,
netmask VARCHAR(32) NOT NULL,
gateway VARCHAR(32) DEFAULT NULL,
subnet_id INT DEFAULT NULL,
interface VARCHAR(32) DEFAULT NULL,
INDEX (address),
INDEX (interface),
FOREIGN KEY (scope_map_id) REFERENCES scope_map(id) ON DELETE CASCADE,
FOREIGN KEY (subnet_id) REFERENCES subnets(id) ON DELETE CASCADE
);
mysqladmin --defaults-extra-file=/etc/root.my.cnf --user=root create shadow
mysql --defaults-extra-file=/etc/root.my.cnf
> grant select,update,insert,delete,lock tables on shadow.* to apache@localhost;
> grant select,update,insert,delete,lock tables on shadow.* to apache@HOSTNAME;
mysql --defaults-extra-file=/etc/root.my.cnf --user=root shadow
> DROP TABLE IF EXISTS attributes;
CREATE TABLE attributes (
Scope enum ('global', 'os', 'environment', 'appliance', 'host'),
Attr varchar(128) NOT NULL,
Value text,
ScopeID int(11)
);
You can no longer pass network=all
or output-network=all
to
the add firewall
commands. That is the default, so if you want
the firewall rule to apply to all networks, just don't specify
the network
or output-network
parameters. This is how it really
worked in the previous code, specifying all
was just a nop.
There is new a database schema for the firewall rules. This SQL
will update an existing DB, but you will lose your existing
firewall rules in the process:
DROP TABLE IF EXISTS global_firewall;
DROP TABLE IF EXISTS os_firewall;
DROP TABLE IF EXISTS appliance_firewall;
DROP TABLE IF EXISTS node_firewall;
DROP TABLE IF EXISTS environment_firewall;
CREATE TABLE scope_map (
id INT AUTO_INCREMENT PRIMARY KEY,
scope ENUM('global','appliance','os','environment', 'host') NOT NULL,
appliance_id INT DEFAULT NULL,
os_id INT DEFAULT NULL,
environment_id INT DEFAULT NULL,
node_id INT DEFAULT NULL,
INDEX (scope),
FOREIGN KEY (appliance_id) REFERENCES appliances(id) ON DELETE CASCADE,
FOREIGN KEY (os_id) REFERENCES oses(id) ON DELETE CASCADE,
FOREIGN KEY (environment_id) REFERENCES environments(id) ON DELETE CASCADE,
FOREIGN KEY (node_id) REFERENCES nodes(id) ON DELETE CASCADE
);
CREATE TABLE firewall_rules (
id INT AUTO_INCREMENT PRIMARY KEY,
scope_map_id INT NOT NULL,
name VARCHAR(256) NOT NULL,
table_type ENUM('nat','filter','mangle','raw') NOT NULL,
chain VARCHAR(256) NOT NULL,
action VARCHAR(256) NOT NULL,
service VARCHAR(256) NOT NULL,
protocol VARCHAR(256) NOT NULL,
in_subnet_id INT DEFAULT NULL,
out_subnet_id INT DEFAULT NULL,
flags VARCHAR(256) DEFAULT NULL,
comment VARCHAR(256) DEFAULT NULL,
INDEX (name),
INDEX (table_type),
FOREIGN KEY (scope_map_id) REFERENCES scope_map(id) ON DELETE CASCADE,
FOREIGN KEY (in_subnet_id) REFERENCES subnets(id) ON DELETE CASCADE,
FOREIGN KEY (out_subnet_id) REFERENCES subnets(id) ON DELETE CASCADE
);