summaryrefslogtreecommitdiff
path: root/morphlib
Commit message (Collapse)AuthorAgeFilesLines
* stagingarea: Mount things inside dirnamebaserock/richardmaw/bugfix/stagingarea-mounts-inside-destdir-v2Richard Maw2014-12-121-1/+6
|
* Merge branch 'sam/fix-openstack-credentials-check'Sam Thursfield2014-12-101-4/+11
|\ | | | | | | | | Reviewed-By: Richard Ipsum <richard.ipsum@codethink.co.uk> Reviewed-By: Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
| * openstack.check: Be more careful when claiming credentials are invalidSam Thursfield2014-12-091-4/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to check the user's credentials at the start of deployment, we try to run `glance image-list`. I found a situation where this command failed despite my credentials being correct. Morph outputted a misleading error message that said 'Wrong OpenStack credentials' The code now checks that the error returned by 'glance' does indeed look like a credentials error. If it doesn't, the full error output is displayed. The error I encountered now gets a message like this: ERROR: openstack.check failed with code 1: ERROR: Failed to connect to OpenStack instance at https://example.com:5000/v2.0: [('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')] (If you are curious, I fixed this by running `update-ca-certificates`.)
* | deploy: Note that some of the extensions listed live in definitions.gitSam Thursfield2014-12-094-14/+18
| | | | | | | | | | | | | | | | The user should be aware of this because if they aren't building baserock:baserock/definitions or a repo forked from it, those extensions won't be available. Also fix some long lines that I seem to have failed to commit already.
* | Merge remote-tracking branch 'petefoth/pf-document-extensions'Sam Thursfield2014-12-098-59/+147
|\ \ | |/ |/| | | | | Reviewed-By: Adam Coldrick <adam.coldrick@codethink.co.uk> Reviewed-By: Sam Thursfield <sam.thursfield@codethink.co.uk>
| * Add a reference to write.help filePete Fotheringham2014-12-083-18/+5
| |
| * initramfs write extension documentationPete Fotheringham2014-12-081-0/+6
| |
| * rawdisk write extension documentationPete Fotheringham2014-12-081-8/+34
| |
| * ssh-rsync write extension documentationPete Fotheringham2014-12-081-0/+36
| |
| * OpenStack write extension documentationPete Fotheringham2014-12-052-32/+39
| |
| * Add missing types to the docstring in the DeployPlugin.deploy() functionPete Fotheringham2014-12-051-1/+27
| |
* | Fix `morph help-extensions` run outside a workspaceSam Thursfield2014-12-051-1/+3
| | | | | | | | | | | | | | | | | | This command would use the sysbranchdir.open_from_within() function call to search for a system branch, which traverses all subdirectories looking for a directory. This is useful behaviour, but if the user ran `morph help-extensions` in / it'd traverse their whole filesystem before returning, which is stupid. This change means it only does the traverse if it already detected a workspace.
* | Fix `morph help-extensions` returning no itemsSam Thursfield2014-12-051-1/+1
|/ | | | | We were passing a nonsensical value for the 'kind' parameter so it would always return an empty list.
* Give a better error when no repos are found in a system branchSam Thursfield2014-12-041-1/+13
| | | | | Previously, if no repos were found Morph would raise 'ValueError: need more than 0 values to unpack' and leave the user with a traceback.
* Fix finding Git directories to include in a temporary build refSam Thursfield2014-12-041-1/+1
| | | | | | | | | | When running 'morph build' the code looks through all the Git repos in a system branch, to see which are involved in the build. These are then checked for local changes and have temporary build refs created in them. Due to a mistake in the logic, this would give up if it found a repo that came from elsewhere but was inside the system branch directory. So in the past some legitimate repos might have been ignored sometimes.
* Gracefully handle Git repos in system branches with missing configSam Thursfield2014-12-041-1/+5
| | | | | | | | Previously if there were repos present in the system branch that weren't put there with `morph edit` or had lost their Morph-specific configuration entries somehow you might see this error: ERROR: Command failed: git config -z morph.repository
* Document that GitDirectory.get_config() can raise an exceptionSam Thursfield2014-12-041-3/+7
| | | | Also fix wrong indent.
* Remove unicode charactersPedro Alvarez2014-12-011-2/+4
|
* Fix line lengths to be shorter than 80 columnsPedro Alvarez2014-12-012-20/+26
|
* writeexts.py: convert 'mount' to context managerbaserock/pedroalvarez/rawdisk-to-device8Pedro Alvarez2014-12-013-78/+58
|
* Update rawdisk.check to support device deploymentsPedro Alvarez2014-12-011-8/+10
|
* Modify rawdisk.write to allow the deployment to devicesPedro Alvarez2014-12-011-6/+14
| | | | | | | This patch also modifies rawdisk.write to use the UPGRADE environment variable to figure out when is doing an upgrade or a fresh deployment. This change is important because os.path.isfile doesn't work with devices.
* Split create_local_system on various methodsPedro Alvarez2014-12-011-4/+19
| | | | | | This way we can still use create_local_system to create a raw disk, but also reuse bits of it to be able e.g. to deploy to devices.
* Don't loop mount when mounting a devicePedro Alvarez2014-12-011-1/+4
|
* Add force flag to 'mkfs.btrfs'Pedro Alvarez2014-12-011-1/+1
| | | | | | This way when deploying to a device it will format it without asking the user if the device already has format.
* Add 'is_device' function to check if we are deploying to a devicePedro Alvarez2014-12-011-0/+11
|
* Merge branch 'pf-document-extensions'Pete Fotheringham2014-12-015-38/+147
|\ | | | | | | Reviewed-by: Richard Maw
| * Action review commentsPete Fotheringham2014-12-012-6/+28
| | | | | | | | | | - Document different ways of calling parameters - Allowed values for boolean parameters
| * More complete help documentationPete Fotheringham2014-11-281-3/+84
| |
| * Refere to .write.help file for documentationPete Fotheringham2014-11-282-26/+11
| |
| * Improve readability by adding blank linesPete Fotheringham2014-11-281-0/+6
| |
| * Add more information on existing parameters.Pete Fotheringham2014-11-261-8/+16
|/ | | | Add AUTOSTART parameter
* Document the write extension in the write.help filePete Fotheringham2014-11-262-23/+26
| | | | | - Move docstring from .write to .write.help - Rework the content and formatting of the help information
* Whitespace and line endings?Pete Fotheringham2014-11-251-11/+10
|
* Merge branch 'sam/ensure-git-directory-exists'Sam Thursfield2014-11-172-12/+31
|\ | | | | | | | | Reviewed-By: Adam Coldrick <adam.coldrick@codethink.co.uk> Reviewed-By: Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
| * Check that directory passed to GitDirectory is a git repoSam Thursfield2014-11-172-12/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, creating a GitDirectory object for something that wasn't a Git repository would succeed, but most operations would raise a cliapp.AppException with the following error message: ERROR: Command failed: git config -z core.bare Now, the constructor will raise a NoGitRepoError if the directory isn't a Git repo, which (unless handled) gives the user the following sort of message: ERROR: Directory /src/ws/definitions is not a Git repository
* | Merge branch 'sam/fix-list-artifacts'Sam Thursfield2014-11-141-1/+1
|\ \ | | | | | | | | | Reviewed-By: Richard Maw <richard.maw@codethink.co.uk>
| * | Fix list-artifacts commandSam Thursfield2014-11-141-1/+1
| | | | | | | | | | | | | | | Silly mistake caused this to be broken, and there are no tests for this command inside the morph.git source tree.
* | | Unrevert "Make system-integration commands use containerised_cmdline"baserock/richardmaw/fixup-ro-integrationsRichard Maw2014-11-121-55/+5
| | | | | | | | | | | | | | | The bug in the generated command lines has been fixed, so we can have this cleanup back now.
* | | Make invert_paths work more reliably for writable-allRichard Maw2014-11-122-41/+51
|/ /
* | Revert "Make system-integration commands use containerised_cmdline"Richard Maw2014-11-111-5/+55
| | | | | | | | | | | | | | | | | | | | | | This reverts commit 203f34b2b19b1d3dc51a956ae9329d064ea294dd. The path inversion logic is still buggy for the case of wanting to keep the top-level directory writable. This escaped detection in the test suite because it resulted in directories two levels down being made read-only, and I was only testing one level down.
* | Allow `morph deploy` to cache missing Git repos if it needs toSam Thursfield2014-11-111-1/+0
|/ | | | | | | | | | | | | | | | | | | | | | | | This reverts commit c63f4e61f69820c71c2d8e9b96ce9bdec0d476a1. This change was introduced back when the Baserock system definitions used named Git refs rather than exact SHA1s. Morph would thus need to update each repo involved in a build and resolve each ref before it could build. Now that the system definitions use SHA1s, the 'updating gits' phase is much less slow. The problem with forcing 'no-git-update' is that it makes `morph deploy` depend on the remote repo cache. In the case that all repos involved in the build are avaiable in the remote repo cache (Trove), there is no need for them to have been cached locally just to construct a build graph. But if the network connection to the Trove is unreliable Morph will need to fall back to the local repo cache. Unless Morph has done a full local build of the system being built, it might not have every repo cached locally. Often, cached artifacts from the Trove or distbuild may be used instead of locally building everything. In this case the user sees `morph deploy` failing with errors such as: Repository upstream:binutils-redhat is not cached yet
* Add docstring to SourceResolver class.Sam Thursfield2014-11-101-1/+22
|
* Set the 'update' flag in the SourceResolver constructorSam Thursfield2014-11-101-12/+14
|
* Move create_source_pool code into new 'sourceresolver' moduleSam Thursfield2014-11-105-136/+185
| | | | | | | | This code is an essential part of 'morph build'. It's quite complex and really shouldn't be mixed in with the base Application class. Given a dedicated class we can store some state in the object and avoid functions with seven parameters, too.
* Remove one place where we pass the Application instance aroundSam Thursfield2014-11-063-14/+7
| | | | | | The MorphologyFactory class only uses the status() function of the morphlib.Application instance that it gets passed. So make it require only a status callback.
* Merge branch 'sam/gitdir-fixes-v2'Sam Thursfield2014-11-064-14/+39
|\ | | | | | | | | Reviewed-By: Pedro Alvarez <pedro.alvarez@codethink.co.uk> Reviewed-By: Adam Coldrick <adam.coldrick@codethink.co.uk>
| * Improve documentation of GitDirectory classSam Thursfield2014-11-051-5/+13
| | | | | | | | Clarify that bare repositories are supported, and other fixes.
| * Only search for repository root in GitDirectory constructor if told toSam Thursfield2014-11-054-9/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The GitDirectory() constructor, if passed a 'dirname' that doesn't contain a '.git' subdirectory, can search upwards to find the real root of the repository. This is used by the `add-binary`, `push`, and `pull` commands. This causes very confusing behaviour in the case that 'dirname' points to a directory that should be a Git repository, but isn't, and that directory is a path inside the working tree of another Git repository. Rather than raising an error, in this case the GitDirectory class would perform operations on a different repository to the one the caller expected. This 'search_for_root' behaviour is now opt-in, to avoid confusion.
* | Merge branch 'sam/gitdir-ref-exists'Sam Thursfield2014-11-062-0/+14
|\ \ | | | | | | | | | | | | Reviewed-By: Adam Coldrick <adam.coldrick@codethink.co.uk> Reviewed-By: Jim MacArtuhur <jim.macarthur@codethink.co.uk>