7d33401ee3
This changeset handles the details of applying, removing, listing and retrieving 'modules' from Trove instances. See https://review.openstack.org/#/c/290177 for the corresponding troveclient changes. Scenario tests have been extended to cover the new functionality. These tests can be run by: ./redstack int-tests --group=module A sample module type 'driver' - ping - is included that simply parses the module contents for a message=Text string and returns the 'Text' as the status message. If no 'message=' tag is found, then the driver reports an error message. Due to time constraints, a few unimplemented parts/tests of the blueprint have been triaged as bugs and are scheduled to be fixed before mitaka-rc1. These include: Vertica license module driver: https://bugs.launchpad.net/trove/+bug/1554898 Incomplete module-instances command: https://bugs.launchpad.net/trove/+bug/1554900 Incomplete 'live-update' of modules: https://bugs.launchpad.net/trove/+bug/1554903 Co-Authored-by: Peter Stachowski <peter@tesora.com> Co-Authored-by: Simon Chang <schang@tesora.com> Partially Implements: blueprint module-management Change-Id: Ia8d3ff2f4560a6d997df99d41012ea61fb0096f7 Depends-On: If62f5e51d4628cc6a8b10303d5c3893b3bd5057e
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
# Copyright 2016 Tesora, Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
# 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.
|
|
#
|
|
|
|
from mock import Mock, patch
|
|
|
|
from trove.common import cfg
|
|
from trove.module import models
|
|
from trove.taskmanager import api as task_api
|
|
from trove.tests.unittests import trove_testtools
|
|
from trove.tests.unittests.util import util
|
|
|
|
CONF = cfg.CONF
|
|
|
|
|
|
class CreateModuleTest(trove_testtools.TestCase):
|
|
|
|
@patch.object(task_api.API, 'get_client', Mock(return_value=Mock()))
|
|
def setUp(self):
|
|
util.init_db()
|
|
self.context = Mock()
|
|
self.name = "name"
|
|
self.module_type = 'ping'
|
|
self.contents = 'my_contents\n'
|
|
|
|
super(CreateModuleTest, self).setUp()
|
|
|
|
@patch.object(task_api.API, 'get_client', Mock(return_value=Mock()))
|
|
def tearDown(self):
|
|
super(CreateModuleTest, self).tearDown()
|
|
|
|
def test_can_create_module(self):
|
|
module = models.Module.create(
|
|
self.context,
|
|
self.name, self.module_type, self.contents,
|
|
'my desc', 'my_tenant', None, None, False, True, False)
|
|
self.assertIsNotNone(module)
|
|
module.delete()
|