Merge "Allow buffer mode to be configured for upload"
This commit is contained in:
commit
50dd505136
@ -420,11 +420,24 @@ Please reference Shipyard's `CLI documentation`_ for information related to thes
|
||||
Specifies a UUID (8-4-4-4-12 format) that will be used to correlate logs,
|
||||
transactions, etc. in downstream activities triggered by this interaction.
|
||||
|
||||
**-b / --buffer-mode** (Optional). Default is auto.
|
||||
|
||||
Set the buffer mode when uploading documents. Supported buffer modes
|
||||
include append, replace, auto.
|
||||
|
||||
append: Add the collection to the Shipyard Buffer, only if that
|
||||
collection does not already exist in the Shipyard buffer.
|
||||
|
||||
replace: Clear the Shipyard Buffer before adding the specified
|
||||
collection.
|
||||
|
||||
auto: Let Pegleg determine the appropriate buffer mode to use.
|
||||
|
||||
Usage:
|
||||
|
||||
::
|
||||
|
||||
./pegleg.sh site <options> upload <site_name> --context-marker=<uuid>
|
||||
./pegleg.sh site <options> upload <site_name> --context-marker=<uuid> --buffer=<buffer>
|
||||
|
||||
Site Secrets Group
|
||||
------------------
|
||||
|
@ -367,11 +367,25 @@ def lint_site(*, fail_on_missing_sub_src, exclude_lint, warn_lint, site_name):
|
||||
'interaction ',
|
||||
required=False,
|
||||
type=click.UUID)
|
||||
@click.option(
|
||||
'-b',
|
||||
'--buffer-mode',
|
||||
'buffer_mode',
|
||||
required=False,
|
||||
default='auto',
|
||||
show_default=True,
|
||||
help='Set the buffer mode when uploading documents. Supported buffer '
|
||||
'modes include append, replace, auto.\n'
|
||||
'append: Add the collection to the Shipyard Buffer, only if that '
|
||||
'collection does not already exist in the Shipyard buffer.\n'
|
||||
'replace: Clear the Shipyard Buffer before adding the specified '
|
||||
'collection.\n'
|
||||
'auto: Let Pegleg determine the appropriate buffer mode to use.')
|
||||
@SITE_REPOSITORY_ARGUMENT
|
||||
@click.pass_context
|
||||
def upload(ctx, *, os_project_domain_name,
|
||||
os_user_domain_name, os_project_name, os_username,
|
||||
os_password, os_auth_url, context_marker, site_name):
|
||||
os_password, os_auth_url, context_marker, site_name, buffer_mode):
|
||||
if not ctx.obj:
|
||||
ctx.obj = {}
|
||||
|
||||
@ -391,7 +405,7 @@ def upload(ctx, *, os_project_domain_name,
|
||||
ctx.obj['context_marker'] = str(context_marker)
|
||||
ctx.obj['site_name'] = site_name
|
||||
|
||||
click.echo(ShipyardHelper(ctx).upload_documents())
|
||||
click.echo(ShipyardHelper(ctx, buffer_mode).upload_documents())
|
||||
|
||||
|
||||
@site.group(
|
||||
|
@ -132,3 +132,13 @@ class SaltInsufficientLengthException(PeglegBaseException):
|
||||
"""Exception raised when salt is too short."""
|
||||
|
||||
message = 'PEGLEG_SALT must be at least 24 characters long.'
|
||||
|
||||
|
||||
#
|
||||
# Shipyard Helper Exceptions
|
||||
#
|
||||
|
||||
class InvalidBufferModeException(PeglegBaseException):
|
||||
"""Exception raised when invalid buffer mode specified"""
|
||||
|
||||
message = 'BUFFER MODE must be one of: append, auto, replace'
|
||||
|
@ -18,7 +18,7 @@ import uuid
|
||||
|
||||
import yaml
|
||||
|
||||
from pegleg.engine.exceptions import PeglegBaseException
|
||||
from pegleg.engine import exceptions
|
||||
from pegleg.engine.util import files
|
||||
from pegleg.engine.util.pegleg_secret_management import PeglegSecretManagement
|
||||
|
||||
@ -29,14 +29,14 @@ from shipyard_client.api_client.shipyardclient_context import \
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class AuthValuesError(PeglegBaseException):
|
||||
class AuthValuesError(exceptions.PeglegBaseException):
|
||||
"""Shipyard authentication failed. """
|
||||
|
||||
def __init__(self, *, diagnostic):
|
||||
self.diagnostic = diagnostic
|
||||
|
||||
|
||||
class DocumentUploadError(PeglegBaseException):
|
||||
class DocumentUploadError(exceptions.PeglegBaseException):
|
||||
"""Exception occurs while uploading documents"""
|
||||
|
||||
def __init__(self, message):
|
||||
@ -52,7 +52,7 @@ class ShipyardHelper(object):
|
||||
4. Formats response from Shipyard api_client
|
||||
"""
|
||||
|
||||
def __init__(self, context):
|
||||
def __init__(self, context, buffer_mode='auto'):
|
||||
"""
|
||||
Initializes params to be used by Shipyard
|
||||
|
||||
@ -71,6 +71,7 @@ class ShipyardHelper(object):
|
||||
self.client_context = ShipyardClientContext(
|
||||
self.auth_vars, self.context_marker)
|
||||
self.api_client = ShipyardClient(self.client_context)
|
||||
self.buffer_mode = buffer_mode
|
||||
|
||||
def upload_documents(self):
|
||||
"""Uploads documents to Shipyard """
|
||||
@ -82,10 +83,15 @@ class ShipyardHelper(object):
|
||||
# Append flag is not required for the first
|
||||
# collection being uploaded to Shipyard. It
|
||||
# is needed for subsequent collections.
|
||||
if idx == 0:
|
||||
buffer_mode = None
|
||||
if self.buffer_mode == 'auto':
|
||||
if idx == 0:
|
||||
buffer_mode = None
|
||||
else:
|
||||
buffer_mode = 'append'
|
||||
elif self.buffer_mode == 'append' or self.buffer_mode == 'replace':
|
||||
buffer_mode = self.buffer_mode
|
||||
else:
|
||||
buffer_mode = 'append'
|
||||
raise exceptions.InvalidBufferModeException()
|
||||
|
||||
# Decrypt the documents if encrypted
|
||||
pegleg_secret_mgmt = PeglegSecretManagement(
|
||||
|
Loading…
Reference in New Issue
Block a user