glare/glare/tests/hooks_artifact.py

217 lines
7.6 KiB
Python

# Copyright 2017 - Nokia Networks
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import tempfile
from oslo_config import cfg
from oslo_log import log as logging
from oslo_versionedobjects import fields
from glare.objects import base
from glare.objects.meta import wrappers
Field = wrappers.Field.init
Dict = wrappers.DictField.init
List = wrappers.ListField.init
Blob = wrappers.BlobField.init
Folder = wrappers.FolderField.init
CONF = cfg.CONF
LOG = logging.getLogger(__name__)
class HookChecker(base.BaseArtifact):
fields = {
'temp_dir': Field(
fields.StringField,
required_on_activate=False,
mutable=True),
'temp_file_path_create': Field(
fields.StringField,
required_on_activate=False,
mutable=True),
'temp_file_path_update': Field(
fields.StringField,
required_on_activate=False,
mutable=True),
'temp_file_path_activate': Field(
fields.StringField,
required_on_activate=False,
mutable=True),
'temp_file_path_reactivate': Field(
fields.StringField,
required_on_activate=False,
mutable=True),
'temp_file_path_deactivate': Field(
fields.StringField,
required_on_activate=False,
mutable=True),
'temp_file_path_publish': Field(
fields.StringField,
required_on_activate=False,
mutable=True),
'blob': Blob(
required_on_activate=False,
mutable=True)
}
artifact_type_opts = [
cfg.StrOpt('temp_file_path')
]
@classmethod
def get_type_name(cls):
return "hooks_artifact"
@classmethod
def pre_create_hook(cls, context, af):
# create a temporary file and set the path to artifact field
__, af.temp_file_path_create = tempfile.mkstemp(dir=af.temp_dir)
with open(af.temp_file_path_create, 'w') as f:
f.write('pre_create_hook was called\n')
@classmethod
def post_create_hook(cls, context, af):
with open(af.temp_file_path_create, 'a') as f:
f.write('post_create_hook was called\n')
@classmethod
def pre_update_hook(cls, context, af):
# create a temporary file and set the path to artifact field
__, af.temp_file_path_update = tempfile.mkstemp(dir=af.temp_dir)
with open(af.temp_file_path_update, 'w') as f:
f.write('pre_update_hook was called\n')
@classmethod
def post_update_hook(cls, context, af):
with open(af.temp_file_path_update, 'a') as f:
f.write('post_update_hook was called\n')
@classmethod
def pre_activate_hook(cls, context, af):
# create a temporary file and set the path to artifact field
__, af.temp_file_path_activate = tempfile.mkstemp(dir=af.temp_dir)
with open(af.temp_file_path_activate, 'w') as f:
f.write('pre_activate_hook was called\n')
@classmethod
def post_activate_hook(cls, context, af):
with open(af.temp_file_path_activate, 'a') as f:
f.write('post_activate_hook was called\n')
@classmethod
def pre_publish_hook(cls, context, af):
# create a temporary file and set the path to artifact field
__, af.temp_file_path_publish = tempfile.mkstemp(dir=af.temp_dir)
with open(af.temp_file_path_publish, 'w') as f:
f.write('pre_publish_hook was called\n')
@classmethod
def post_publish_hook(cls, context, af):
with open(af.temp_file_path_publish, 'a') as f:
f.write('post_publish_hook was called\n')
@classmethod
def pre_deactivate_hook(cls, context, af):
# create a temporary file and set the path to artifact field
__, af.temp_file_path_deactivate = tempfile.mkstemp(dir=af.temp_dir)
with open(af.temp_file_path_deactivate, 'w') as f:
f.write('pre_deactivate_hook was called\n')
@classmethod
def post_deactivate_hook(cls, context, af):
with open(af.temp_file_path_deactivate, 'a') as f:
f.write('post_deactivate_hook was called\n')
@classmethod
def pre_reactivate_hook(cls, context, af):
# create a temporary file and set the path to artifact field
__, af.temp_file_path_reactivate = tempfile.mkstemp(dir=af.temp_dir)
with open(af.temp_file_path_reactivate, 'w') as f:
f.write('pre_reactivate_hook was called\n')
@classmethod
def post_reactivate_hook(cls, context, af):
with open(af.temp_file_path_reactivate, 'a') as f:
f.write('post_reactivate_hook was called\n')
@classmethod
def pre_upload_hook(cls, context, af, field_name, blob_key, fd):
# create a temporary file and set the path to artifact field
file_path = getattr(
CONF, 'artifact_type:hooks_artifact').temp_file_path
if file_path:
with open(file_path, 'w') as f:
f.write('pre_upload_hook was called\n')
return fd
@classmethod
def post_upload_hook(cls, context, af, field_name, blob_key):
file_path = getattr(
CONF, 'artifact_type:hooks_artifact').temp_file_path
if file_path:
with open(file_path, 'a') as f:
f.write('post_upload_hook was called\n')
@classmethod
def pre_add_location_hook(
cls, context, af, field_name, blob_key, location):
# create a temporary file and set the path to artifact field
file_path = getattr(
CONF, 'artifact_type:hooks_artifact').temp_file_path
if file_path:
with open(file_path, 'w') as f:
f.write('pre_add_location_hook was called\n')
@classmethod
def post_add_location_hook(cls, context, af, field_name, blob_key):
file_path = getattr(
CONF, 'artifact_type:hooks_artifact').temp_file_path
if file_path:
with open(file_path, 'a') as f:
f.write('post_add_location_hook was called\n')
@classmethod
def pre_download_hook(cls, context, af, field_name, blob_key):
file_path = getattr(
CONF, 'artifact_type:hooks_artifact').temp_file_path
if file_path:
with open(file_path, 'a') as f:
f.write('pre_download_hook was called\n')
@classmethod
def post_download_hook(cls, context, af, field_name, blob_key, fd):
file_path = getattr(
CONF, 'artifact_type:hooks_artifact').temp_file_path
if file_path:
with open(file_path, 'a') as f:
f.write('post_download_hook was called\n')
return fd
@classmethod
def pre_delete_hook(cls, context, af):
file_path = getattr(
CONF, 'artifact_type:hooks_artifact').temp_file_path
if file_path:
with open(file_path, 'w') as f:
f.write('pre_delete_hook was called\n')
@classmethod
def post_delete_hook(cls, context, af):
file_path = getattr(
CONF, 'artifact_type:hooks_artifact').temp_file_path
if file_path:
with open(file_path, 'a') as f:
f.write('post_delete_hook was called\n')