-
Notifications
You must be signed in to change notification settings - Fork 263
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
* add ability to add multiple ip addresses to objects using pattern x… #187
base: maintenance-0.20.x
Are you sure you want to change the base?
Conversation
Please mind the code style. |
Done. |
Thank you, this is better. It seems to me |
I do not have any issues with this, on php 5.6.26 |
Can you accept pull request ? |
This should be one of the next pull requests resolved. |
Add the date of expiration of ip addresses |
This optional means of debugging can provide a feedback loop when the strict SQL mode is not enabled. * collectMySQLWarnings(): new function to buffer the warnings * usePreparedInsertBlade(): amend to call the above * usePreparedDeleteBlade(): idem * usePreparedUpdateBlade(): idem * showMySQLWarnings(): new function to display the buffer * index.php: call the above in the "redirect" case
Amend respective test to fail the right way. * usePreparedDeleteBlade() * usePreparedUpdateBlade()
This is how it was originally intended (also update the sample dataset). * commitAddPortReal(): use nullIfEmptyStr() * commitUpdatePortReal(): idem * upgrade.php: queue an UPDATE for 0.21.0
* lastInsertID(): use PDOStatement::fetchColumn() * getIPv4Stats(): idem * getIPv6Stats(): idem * getRackspaceStats(): idem * sortPortList(): use array_fetch()
Convert a repeated code block to a function, fixup a TD alignment, simplify portlet rendering, do not show the multiport form if permissions would not allow to submit.
Address a long-standing glitch: when a port on the currently displayed object was (or was suggested to be) linked to a port of an object that had no name, the displayed remote object name would be an empty string. This change makes the interface display a standard substitute instead, which among other things makes the remote object hyperlink clickable. * fetchPortList(): add remote object type ID to the result columns * renderObjectPortRow(): make use of formatObjectDisplayedName() * renderPortsForObject(): idem * findSparePorts(): all of the above
For simpler maintenance the RackTables-specific CSS modifications now reside in css/codemirror/rackcode.css. Do not include the CSS, HTML, JavaScript, PHP and SQL CodeMirror tokenizers anymore as they had not proved to be useful.
This completes the changes done in commit cf5da67. * renderRackCodeEditor() * renderTextEditor()
Reimplement the RackCode language mode in rackcode.js using simpler JavaScript code and define a standalone "rackcode" theme in rackcode.css instead of overriding the default theme. In renderRackCodeEditor() pass more properties to CodeMirror constructor and make minor HTML fixups. In renderRackCodeViewer() rewrite the code to use CodeMirror in read-only mode and to scroll to requested line on request. Amend the URL format in refRCLineno() respectively.
There is no reason to specify a default value for $input_name in printTagsPickerInput() and printTagsPickerUl() so long as printTagsPicker() is the only function that calls those functions.
A read-only RackTables instance would display an error image instead of the thumbnail image for any rack that has invalidated thumbnail cache. This change makes it deliver the thumbnail even if the attempted cache update failed because of insufficient database permissions. * RTDBTableAccessDenied: a new exception class * convertPDOException(): add a respective case block for the error code * dispatchMiniRackThumbRequest(): use the above for its REPLACE and update the comment
The conceptual purpose of usePreparedDeleteBlade() is to delete a specific, well-defined set of rows from a table. However, Maik Ehinger in his tag colour code had pointed it out that a hack allowed to delete all rows from a table like this: usePreparedDeleteBlade ('TableName', array ('1' => '1')); Enforce the originally intended semantics in usePreparedDeleteBlade() and update the other two SQL helper functions for consistency. Update existing tests and add new tests. * assertListOfColumnNames(): new function to test if the list items look reasonably similar to SQL column names * makeSetSQL(): replace the previously existing test, which produced a generic message, with the new function; escape SQL columns names and add some spacing for readability * makeWhereSQL(): idem * usePreparedInsertBlade(): escape the table name and switch to INSERT ... SET syntax to reuse the code in makeSetSQL() * usePreparedDeleteBlade(): leave the previously existing test, which produces a specific message, before the new test; escape the table name * usePreparedUpdateBlade(): idem
This provides a temporary means for some users to hide the TD that contains the tag selector in their RackTables installation. See the discussion on racktables-users by Gerardo Ferreyra and Helen Browne. * renderRackspace() * renderDepot() * renderIPSpace() * renderCellList()
The call to usePreparedDeleteBlade() in destroyTag() [expectedly] started to trigger an exception. However, that call didn't do any useful work in the first place because a foreign key does not allow to delete a row from TagTree if there are any dependent rows in TagStorage, this way if a tag can be deleted it means it is not assigned to any rack or object and hence its colour does not make any difference to any rack thumbnail. Without the call that truncates RackThumbnail destroyTag() has no purpose anymore so delete it and leave the $opspec_list declaration to do the job through tableHandler() as before.
Conflicts: ChangeLog
Conflicts: wwwroot/inc/config.php
This reverts commit 710bb27.
RackTables used to require PHP 5.2.10 or later for several years. As soon as PHP versions 7.x are the default now it is wrong to claim support for something that the upstream itself does not support anymore (5.5 is the oldest supported version on php.net). This upcoming change was announced on racktables-users on 2017-07-21 and nobody has objected so let's go ahead. From now on it is OK to _improve_ RackTables PHP code in ways that break it on PHP versions 5.2/5.3/5.4 only.
Out of 47 heredoc strings only 11 actually involved PHP variable interpolation. To make it easier to see what to expect from a random long literal, denote genuine 11 heredoc instances with double quotes and convert the other 36 instances to nowdoc. This syntax was introduced in PHP 5.3.0.
After the testing environment upgrade PHP "7.0" is no longer 7.0.16 or newer (with PHPUnit 6), it is 7.0.7 with PHPUnit 5, for whatever reason, so do not run two PHP 7.0 jobs. PHP 7.1 job has PHPUnit 6 and RackTables PHPUnit tests can sort themselves out whichever PHPUnit version it is.
* renderObject8021QSyncPreview(): move the custom JavaScript code here
This fixes the "802.1Q sync" tab, which was broken; see commit 37095aa.
Make the L2 address regexps strictly uppercase because they are used to match all-uppercase strings. In l2addressForDatabase() add handling of IP-over-InfiniBand L2 addresses (20 bytes long). Change the SunOS-specific notation to apply to MAC addresses only. It used to apply to WWN addresses too, most likely due to a copy-and-paste change, and can be restored if there is a genuine use case for it. Resize the text inputs in renderPortsForObject() for IPoIB L2 addresses. Change l2addressFromDatabase() to reject addresses that it would be impossible to have in the database by normal means. Rearrange some code for readability and update comments. Add and update tests as necessary.
In renderDataIntegrityReport() add another check to look for L2 addresses that have invalid length (there is already an existing check for invalid characters). Declare and reuse table columns definitions.
Implement RTTestCase::myString() and update the tests to use it instead of copying code around.
getObjectClass() used to do three different jobs and to accept two to three arguments, of which the first was always a constant. Split its code into three smaller and better focused functions with less arguments and replace a global with a static. Also in the gradient definition convert the percentage from float to integer to avoid potential issues in future (see commit c3fe089). * getObjectClass(): unary or binary function * getTagClass(): unary function * getCachedCSSClassForStyle(): binary function * renderTagRowForEditor(): update as necessary * getColorSelect(): ditto * getTagClassName(): ditto * enableTagsPicker(): ditto * setEntityColors(): ditto * printObjectDetailsForRenderRack(): ditto * renderRack(): ditto * renderDepot(): ditto * renderIPSpaceRecords(): ditto
When the worker function outputs its contents normally, the calling function needs the contents only, the buffer itself is removed, which is right. When the worker function throws, don't just discard the contents, remove the buffer too.
Test that renderDepot() has not returned an empty string, it is not much but more than the mere fact the function managed to return without an exception. Leave output buffer management to getOutputOf() and exception handling -- to PHPUnit. This change makes it possible to see that this test failure on PHP 7.1 is actually an error (as much as PHPUnit distinguishes "failures" and "errors") and it occurs the same way on both PHPUnit 5 and PHPUnit 6: There was 1 error: 1) RenderDepotTest::testRenderDepot session_start(): Cannot send session cookie - headers already sent by (output started at /usr/share/php/PHPUnit6/Util/Printer.php:112)
This removes interference with RackTables code trying to send HTTP headers (with session_start() at least) and should fix RenderDepotTest on PHP 7.1.
This is one of the changes required for compatibility with PHP 7.1, it reduces the number of test cases errored due to the warning below and should fix RenderDepotTest, which was still erroring because of the output started by the non-numeric warnings. PHP Warning: A non-numeric value encountered in .../functions.php on line 5414
* renderNewRackForm() * renderEditRSList() * renderNewVSForm()
In renderVLANDomainListEditor() $dominfo['group_id'] is either NULL or a string representation of an unsigned integer. Both kinds of values will evaluate without the conversion as expected in printNiftySelect() and its worker functions. In renderEmptyResults() and getPageNumOfIPv6() the value originates from getConfigVar(), which makes the conversion because the configuration variable is declared "uint", hence the call is a no-op.
No description provided.