コード例 #1
0
 def _mock_event(event_id, resource_id):
     ev_info = {"links": [{"href": "http://heat/foo", "rel": "self"}],
                "logical_resource_id": resource_id,
                "physical_resource_id": resource_id,
                "resource_status": "CREATE_COMPLETE",
                "resource_status_reason": "state changed",
                "event_time": "2014-12-05T14:14:30Z",
                "id": event_id}
     return hc_ev.Event(manager=None, info=ev_info)
コード例 #2
0
    def test_event_show(self):
        arglist = ['--format', self.format, 'my_stack', 'my_resource', '1234']
        parsed_args = self.check_parser(self.cmd, arglist, [])
        self.event_client.get.return_value = events.Event(None, self.response)

        self.cmd.take_action(parsed_args)

        self.event_client.get.assert_called_with(**{
            'stack_id': 'my_stack',
            'resource_name': 'my_resource',
            'event_id': '1234'
        })
コード例 #3
0
 def _mock_stack_event(event_id, stack_name,
                       stack_status='CREATE_COMPLETE'):
     stack_id = 'abcdef'
     ev_info = {"links": [{"href": "http://heat/foo", "rel": "self"},
                          {"href": "http://heat/stacks/%s/%s" % (stack_name,
                                                                 stack_id),
                           "rel": "stack"}],
                "logical_resource_id": stack_name,
                "physical_resource_id": stack_id,
                "resource_name": stack_name,
                "resource_status": stack_status,
                "resource_status_reason": "state changed",
                "event_time": "2014-12-05T14:14:30Z",
                "id": event_id}
     return hc_ev.Event(manager=None, info=ev_info)
コード例 #4
0
def wait_for_events(ws, stack_name, out=None):
    """Receive events over the passed websocket and wait for final status."""
    msg_template = _("\n Stack %(name)s %(status)s \n")
    if not out:
        out = sys.stdout
    event_log_context = utils.EventLogContext()
    while True:
        data = ws.recv()['body']
        event = events_mod.Event(None, data['payload'], True)
        # Keep compatibility with the HTTP API
        event.event_time = data['timestamp']
        event.resource_status = '%s_%s' % (event.resource_action,
                                           event.resource_status)
        events_log = utils.event_log_formatter([event], event_log_context)
        out.write(events_log)
        out.write('\n')
        if data['payload']['resource_name'] == stack_name:
            stack_status = data['payload']['resource_status']
            if stack_status in ('COMPLETE', 'FAILED'):
                msg = msg_template % dict(name=stack_name,
                                          status=event.resource_status)
                return '%s_%s' % (event.resource_action, stack_status), msg
コード例 #5
0
ファイル: heat_data.py プロジェクト: jtomasek/tuskar-ui-2
def data(TEST):

    # Stack
    TEST.heatclient_stacks = test_data_utils.TestDataContainer()
    stack_1 = stacks.Stack(
        stacks.StackManager(None), {
            'id':
            'stack-id-1',
            'stack_name':
            'overcloud',
            'stack_status':
            'RUNNING',
            'outputs': [{
                'output_key': 'KeystoneURL',
                'output_value': 'http://192.0.2.23:5000/v2',
            }],
            'parameters': {
                'plan_id': 'plan-1',
                'one': 'one',
                'two': 'two',
            }
        })
    TEST.heatclient_stacks.add(stack_1)

    # Events
    TEST.heatclient_events = test_data_utils.TestDataContainer()
    event_1 = events.Event(
        events.EventManager(None), {
            'id': 1,
            'stack_id': 'stack-id-1',
            'resource_name': 'Controller',
            'resource_status': 'CREATE_IN_PROGRESS',
            'resource_status_reason': 'state changed',
            'event_time': '2014-01-01T07:26:15Z'
        })
    event_2 = events.Event(
        events.EventManager(None), {
            'id': 2,
            'stack_id': 'stack-id-1',
            'resource_name': 'Compute0',
            'resource_status': 'CREATE_IN_PROGRESS',
            'resource_status_reason': 'state changed',
            'event_time': '2014-01-01T07:26:27Z'
        })
    event_3 = events.Event(
        events.EventManager(None), {
            'id': 3,
            'stack_id': 'stack-id-1',
            'resource_name': 'Compute1',
            'resource_status': 'CREATE_IN_PROGRESS',
            'resource_status_reason': 'state changed',
            'event_time': '2014-01-01T07:26:44Z'
        })
    event_4 = events.Event(
        events.EventManager(None), {
            'id': 4,
            'stack_id': 'stack-id-1',
            'resource_name': 'Compute0',
            'resource_status': 'CREATE_COMPLETE',
            'resource_status_reason': 'state changed',
            'event_time': '2014-01-01T07:27:14Z'
        })
    event_5 = events.Event(
        events.EventManager(None), {
            'id': 5,
            'stack_id': 'stack-id-1',
            'resource_name': 'Compute2',
            'resource_status': 'CREATE_IN_PROGRESS',
            'resource_status_reason': 'state changed',
            'event_time': '2014-01-01T07:27:31Z'
        })
    event_6 = events.Event(
        events.EventManager(None), {
            'id': 6,
            'stack_id': 'stack-id-1',
            'resource_name': 'Compute1',
            'resource_status': 'CREATE_COMPLETE',
            'resource_status_reason': 'state changed',
            'event_time': '2014-01-01T07:28:01Z'
        })
    event_7 = events.Event(
        events.EventManager(None), {
            'id': 7,
            'stack_id': 'stack-id-1',
            'resource_name': 'Controller',
            'resource_status': 'CREATE_COMPLETE',
            'resource_status_reason': 'state changed',
            'event_time': '2014-01-01T07:28:59Z'
        })
    event_8 = events.Event(
        events.EventManager(None), {
            'id': 8,
            'stack_id': 'stack-id-1',
            'resource_name': 'Compute2',
            'resource_status': 'CREATE_COMPLETE',
            'resource_status_reason': 'state changed',
            'event_time': '2014-01-01T07:29:11Z'
        })
    TEST.heatclient_events.add(event_1, event_2, event_3, event_4, event_5,
                               event_6, event_7, event_8)

    # Resource
    TEST.heatclient_resources = test_data_utils.TestDataContainer()
    resource_1 = resources.Resource(
        resources.ResourceManager(None), {
            'id': '1-resource-id',
            'stack_id': 'stack-id-1',
            'resource_name': 'Compute0',
            'logical_resource_id': 'Compute0',
            'physical_resource_id': 'aa',
            'resource_status': 'CREATE_COMPLETE',
            'resource_type': 'Compute'
        })
    resource_2 = resources.Resource(
        resources.ResourceManager(None), {
            'id': '2-resource-id',
            'stack_id': 'stack-id-1',
            'resource_name': 'Controller',
            'logical_resource_id': 'Controller',
            'physical_resource_id': 'bb',
            'resource_status': 'CREATE_COMPLETE',
            'resource_type': 'Controller'
        })
    resource_3 = resources.Resource(
        resources.ResourceManager(None), {
            'id': '3-resource-id',
            'stack_id': 'stack-id-1',
            'resource_name': 'Compute1',
            'logical_resource_id': 'Compute1',
            'physical_resource_id': 'cc',
            'resource_status': 'CREATE_COMPLETE',
            'resource_type': 'Compute'
        })
    resource_4 = resources.Resource(
        resources.ResourceManager(None), {
            'id': '4-resource-id',
            'stack_id': 'stack-id-4',
            'resource_name': 'Compute2',
            'logical_resource_id': 'Compute2',
            'physical_resource_id': 'dd',
            'resource_status': 'CREATE_COMPLETE',
            'resource_type': 'Compute'
        })
    TEST.heatclient_resources.add(resource_1, resource_2, resource_3,
                                  resource_4)

    # Server
    TEST.novaclient_servers = test_data_utils.TestDataContainer()
    s_1 = servers.Server(
        servers.ServerManager(None), {
            'id': 'aa',
            'name': 'Compute',
            'created': '2014-06-26T20:38:06Z',
            'image': {
                'id': '1'
            },
            'flavor': {
                'id': '1',
            },
            'status': 'ACTIVE',
            'public_ip': '192.168.1.1'
        })
    s_2 = servers.Server(
        servers.ServerManager(None), {
            'id': 'bb',
            'name': 'Controller',
            'created': '2014-06-27T20:38:06Z',
            'image': {
                'id': '2'
            },
            'flavor': {
                'id': '2',
            },
            'status': 'ACTIVE',
            'public_ip': '192.168.1.2'
        })
    s_3 = servers.Server(
        servers.ServerManager(None), {
            'id': 'cc',
            'name': 'Compute',
            'created': '2014-06-28T20:38:06Z',
            'image': {
                'id': '1'
            },
            'flavor': {
                'id': '1',
            },
            'status': 'BUILD',
            'public_ip': '192.168.1.3'
        })
    s_4 = servers.Server(
        servers.ServerManager(None), {
            'id': 'dd',
            'name': 'Compute',
            'created': '2014-06-29T20:38:06Z',
            'image': {
                'id': '1'
            },
            'flavor': {
                'id': '1',
            },
            'status': 'ERROR',
            'public_ip': '192.168.1.4'
        })
    TEST.novaclient_servers.add(s_1, s_2, s_3, s_4)

    # Image
    TEST.glanceclient_images = test_data_utils.TestDataContainer()
    image_1 = images.Image(images.ImageManager(None), {
        'id': '2',
        'name': 'overcloud-control'
    })
    image_2 = images.Image(images.ImageManager(None), {
        'id': '1',
        'name': 'overcloud-compute'
    })
    image_3 = images.Image(images.ImageManager(None), {
        'id': '3',
        'name': 'Object Storage Image'
    })
    image_4 = images.Image(images.ImageManager(None), {
        'id': '4',
        'name': 'Block Storage Image'
    })
    TEST.glanceclient_images.add(image_1, image_2, image_3, image_4)
コード例 #6
0
class TestStackHookPoll(TestStack):

    stack = stacks.Stack(
        None, {
            "id": '1234',
            "stack_name": 'my_stack',
            "creation_time": "2013-08-04T20:57:55Z",
            "updated_time": "2013-08-04T20:57:55Z",
            "stack_status": "CREATE_IN_PROGRESS"
        })
    resource = resources.Resource(
        None, {
            'resource_name':
            'resource1',
            'links': [{
                'href': 'http://heat.example.com:8004/resource1',
                'rel': 'self'
            }, {
                'href': 'http://192.168.27.100:8004/my_stack',
                'rel': 'stack'
            }],
            'logical_resource_id':
            'random_group',
            'creation_time':
            '2015-12-03T16:50:56',
            'resource_status':
            'INIT_COMPLETE',
            'updated_time':
            '2015-12-03T16:50:56',
            'required_by': [],
            'resource_status_reason':
            '',
            'physical_resource_id':
            '',
            'resource_type':
            'OS::Heat::ResourceGroup',
            'id':
            '1111'
        })
    columns = ['ID', 'Resource Status Reason', 'Resource Status', 'Event Time']
    event0 = events.Event(manager=None,
                          info={
                              'resource_name': 'my_stack',
                              'event_time': '2015-12-02T16:50:56',
                              'logical_resource_id': 'my_stack',
                              'resource_status': 'CREATE_IN_PROGRESS',
                              'resource_status_reason': 'Stack CREATE started',
                              'id': '1234'
                          })
    event1 = events.Event(manager=None,
                          info={
                              'resource_name': 'resource1',
                              'event_time': '2015-12-03T19:59:58',
                              'logical_resource_id': 'resource1',
                              'resource_status': 'INIT_COMPLETE',
                              'resource_status_reason':
                              'CREATE paused until Hook pre-create is cleared',
                              'id': '1111'
                          })
    row1 = ('resource1', '1111',
            'CREATE paused until Hook pre-create is cleared', 'INIT_COMPLETE',
            '2015-12-03T19:59:58')

    def setUp(self):
        super(TestStackHookPoll, self).setUp()
        self.cmd = stack.StackHookPoll(self.app, None)
        self.mock_client.stacks.get = mock.Mock(return_value=self.stack)
        self.mock_client.events.list = mock.Mock(
            return_value=[self.event0, self.event1])
        self.mock_client.resources.list = mock.Mock(
            return_value=[self.resource])

    def test_hook_poll(self):
        expected_columns = ['Resource Name'] + self.columns
        expected_rows = [self.row1]
        arglist = ['my_stack']
        parsed_args = self.check_parser(self.cmd, arglist, [])
        columns, rows = self.cmd.take_action(parsed_args)
        self.assertEqual(expected_rows, list(rows))
        self.assertEqual(expected_columns, columns)

    def test_hook_poll_nested(self):
        expected_columns = ['Resource Name'] + self.columns + ['Stack Name']
        expected_rows = [self.row1 + ('my_stack', )]
        arglist = ['my_stack', '--nested-depth=10']
        parsed_args = self.check_parser(self.cmd, arglist, [])
        columns, rows = self.cmd.take_action(parsed_args)
        self.assertEqual(expected_rows, list(rows))
        self.assertEqual(expected_columns, columns)

    def test_hook_poll_nested_invalid(self):
        arglist = ['my_stack', '--nested-depth=ugly']
        parsed_args = self.check_parser(self.cmd, arglist, [])
        self.assertRaises(exc.CommandError, self.cmd.take_action, parsed_args)
コード例 #7
0
 def test_is_diff_object_with_diff_type(self):
     # Two resources with different types: is different object
     r1 = events.Event(None, {'id': 1})
     r2 = stacks.Stack(None, {'id': 1})
     self.assertFalse(r1.is_same_obj(r2))
     self.assertFalse(r2.is_same_obj(r1))
コード例 #8
0
 def test_two_resources_with_diff_type_are_not_equal(self):
     # Two resoruces of different types: never equal
     r1 = base.Resource(None, {'id': 1})
     r2 = events.Event(None, {'id': 1})
     self.assertNotEqual(r1, r2)