def _setup_test_instance(self, intags=None):
        self.stack_name = 'tag_test'
        t = template_format.parse(instance_template)
        template = tmpl.Template(t,
                                 env=environment.Environment(
                                     {'KeyName': 'test'}))
        self.stack = parser.Stack(utils.dummy_context(), self.stack_name,
                                  template,
                                  stack_id=str(uuid.uuid4()))

        t['Resources']['WebServer']['Properties']['Tags'] = intags
        resource_defns = template.resource_definitions(self.stack)
        instance = instances.Instance('WebServer',
                                      resource_defns['WebServer'], self.stack)

        self.patchobject(nova.NovaClientPlugin, '_create',
                         return_value=self.fc)
        self._mock_get_image_id_success('CentOS 5.2', 1)
        # need to resolve the template functions
        self.metadata = instance.metadata_get()
        self.server_userdata = instance.client_plugin().build_userdata(
            self.metadata,
            instance.properties['UserData'],
            'ec2-user')
        self.mock_build_userdata = self.patchobject(
            nova.NovaClientPlugin,
            'build_userdata',
            return_value=self.server_userdata)
        self.fc.servers.create = mock.Mock(
            return_value=self.fc.servers.list()[1])

        return instance
    def _create_test_instance(self, return_server, name):
        stack_name = '%s_s' % name
        t = template_format.parse(wp_template)
        kwargs = {
            'KeyName': 'test',
            'InstanceType': 'm1.large',
            'SubnetId': '4156c7a5-e8c4-4aff-a6e1-8f3c7bc83861'
        }
        tmpl = template.Template(t, env=environment.Environment(kwargs))
        self.stack = parser.Stack(utils.dummy_context(),
                                  stack_name,
                                  tmpl,
                                  stack_id=str(uuid.uuid4()))
        image_id = 'CentOS 5.2'
        t['Resources']['WebServer']['Properties']['ImageId'] = image_id
        resource_defns = self.stack.t.resource_definitions(self.stack)
        instance = instances.Instance('%s_name' % name,
                                      resource_defns['WebServer'], self.stack)
        metadata = instance.metadata_get()

        self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
        nova.NovaClientPlugin._create().AndReturn(self.fc)

        self._mock_get_image_id_success(image_id, 1)
        self.stub_SubnetConstraint_validate()
        self.m.StubOutWithMock(instance, 'neutron')
        instance.neutron().MultipleTimes().AndReturn(FakeNeutron())

        self.m.StubOutWithMock(neutron.NeutronClientPlugin, '_create')
        neutron.NeutronClientPlugin._create().MultipleTimes().AndReturn(
            FakeNeutron())

        # need to resolve the template functions
        server_userdata = instance.client_plugin().build_userdata(
            metadata, instance.properties['UserData'], 'ec2-user')
        self.m.StubOutWithMock(nova.NovaClientPlugin, 'build_userdata')
        nova.NovaClientPlugin.build_userdata(
            metadata, instance.properties['UserData'],
            'ec2-user').AndReturn(server_userdata)

        self.m.StubOutWithMock(self.fc.servers, 'create')
        self.fc.servers.create(
            image=1,
            flavor=3,
            key_name='test',
            name=utils.PhysName(stack_name, instance.name),
            security_groups=None,
            userdata=server_userdata,
            scheduler_hints=None,
            meta=None,
            nics=[{
                'port-id': '64d913c1-bcb1-42d2-8f0a-9593dbcaf251'
            }],
            availability_zone=None,
            block_device_mapping=None).AndReturn(return_server)
        self.m.ReplayAll()

        scheduler.TaskRunner(instance.create)()
        return instance
Beispiel #3
0
    def test_nokey_create(self):

        stack_name = 's_nokey'
        t = template_format.parse(nokey_template)
        stack = utils.parse_stack(t, stack_name=stack_name)

        t['Resources']['WebServer']['Properties']['ImageId'] = 'CentOS 5.2'
        t['Resources']['WebServer']['Properties'][
            'InstanceType'] = '256 MB Server'
        resource_defns = stack.t.resource_definitions(stack)
        instance = instances.Instance('create_instance_name',
                                      resource_defns['WebServer'], stack)

        self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
        nova.NovaClientPlugin._create().AndReturn(self.fc)
        self.m.StubOutWithMock(glance.GlanceClientPlugin,
                               'find_image_by_name_or_id')
        glance.GlanceClientPlugin.find_image_by_name_or_id(
            'CentOS 5.2').MultipleTimes().AndReturn(1)

        # need to resolve the template functions
        metadata = instance.metadata_get()
        server_userdata = instance.client_plugin().build_userdata(
            metadata, instance.properties['UserData'], 'ec2-user')
        self.m.StubOutWithMock(nova.NovaClientPlugin, 'build_userdata')
        nova.NovaClientPlugin.build_userdata(
            metadata, instance.properties['UserData'],
            'ec2-user').AndReturn(server_userdata)

        self.m.StubOutWithMock(self.fc.servers, 'create')
        self.fc.servers.create(image=1,
                               flavor=1,
                               key_name=None,
                               name=utils.PhysName(stack_name, instance.name),
                               security_groups=None,
                               userdata=server_userdata,
                               scheduler_hints=None,
                               meta=None,
                               nics=None,
                               availability_zone=None,
                               block_device_mapping=None).AndReturn(
                                   self.fc.servers.list()[1])
        self.m.ReplayAll()

        scheduler.TaskRunner(instance.create)()

        self.m.VerifyAll()
    def _setup_test_instance(self, intags=None, nova_tags=None):
        stack_name = 'tag_test'
        t = template_format.parse(instance_template)
        template = tmpl.Template(t,
                                 env=environment.Environment(
                                     {'KeyName': 'test'}))
        self.stack = parser.Stack(utils.dummy_context(),
                                  stack_name,
                                  template,
                                  stack_id=str(uuid.uuid4()))

        t['Resources']['WebServer']['Properties']['Tags'] = intags
        resource_defns = template.resource_definitions(self.stack)
        instance = instances.Instance('WebServer', resource_defns['WebServer'],
                                      self.stack)

        self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
        nova.NovaClientPlugin._create().AndReturn(self.fc)
        self._mock_get_image_id_success('CentOS 5.2', 1)
        # need to resolve the template functions
        metadata = instance.metadata_get()
        server_userdata = instance.client_plugin().build_userdata(
            metadata, instance.properties['UserData'], 'ec2-user')
        self.m.StubOutWithMock(nova.NovaClientPlugin, 'build_userdata')
        nova.NovaClientPlugin.build_userdata(
            metadata, instance.properties['UserData'],
            'ec2-user').AndReturn(server_userdata)

        self.m.StubOutWithMock(self.fc.servers, 'create')
        self.fc.servers.create(image=1,
                               flavor=1,
                               key_name='test',
                               name=utils.PhysName(stack_name, instance.name),
                               security_groups=None,
                               userdata=server_userdata,
                               scheduler_hints=None,
                               meta=nova_tags,
                               nics=None,
                               availability_zone=None,
                               block_device_mapping=None).AndReturn(
                                   self.fc.servers.list()[1])

        return instance
Beispiel #5
0
    def test_nokey_create(self):
        stack_name = 's_nokey'
        t = template_format.parse(nokey_template)
        stack = utils.parse_stack(t, stack_name=stack_name)

        resource_defns = stack.t.resource_definitions(stack)
        instance = instances.Instance('create_instance_name',
                                      resource_defns['WebServer'], stack)

        # need to resolve the template functions
        metadata = instance.metadata_get()
        server_userdata = instance.client_plugin().build_userdata(
            metadata, instance.properties['UserData'], 'ec2-user')

        fc = fakes_nova.FakeClient()
        self.patchobject(nova.NovaClientPlugin, '_create', return_value=fc)
        self.patchobject(glance.GlanceClientPlugin,
                         'find_image_by_name_or_id',
                         return_value=1234)
        self.patchobject(nova.NovaClientPlugin,
                         'build_userdata',
                         return_value=server_userdata)

        self.patchobject(fc.servers,
                         'create',
                         return_value=fc.servers.list()[1])

        scheduler.TaskRunner(instance.create)()

        fc.servers.create.assert_called_once_with(image=1234,
                                                  flavor=3,
                                                  key_name=None,
                                                  name=utils.PhysName(
                                                      stack_name,
                                                      instance.name),
                                                  security_groups=None,
                                                  userdata=server_userdata,
                                                  scheduler_hints=None,
                                                  meta=None,
                                                  nics=None,
                                                  availability_zone=None,
                                                  block_device_mapping=None)
Beispiel #6
0
    def _create_test_instance_with_nic(self, return_server, name):
        stack_name = '%s_s' % name
        t = template_format.parse(wp_template_with_nic)
        kwargs = {
            'KeyName': 'test',
            'InstanceType': 'm1.large',
            'SubnetId': '4156c7a5-e8c4-4aff-a6e1-8f3c7bc83861'
        }
        tmpl = template.Template(t, env=environment.Environment(kwargs))
        self.stack = parser.Stack(utils.dummy_context(),
                                  stack_name,
                                  tmpl,
                                  stack_id=str(uuid.uuid4()))
        image_id = 'CentOS 5.2'
        t['Resources']['WebServer']['Properties']['ImageId'] = image_id

        resource_defns = self.stack.t.resource_definitions(self.stack)
        nic = net_interfaces.NetworkInterface('%s_nic' % name,
                                              resource_defns['nic1'],
                                              self.stack)

        instance = instances.Instance('%s_name' % name,
                                      resource_defns['WebServer'], self.stack)
        metadata = instance.metadata_get()

        self._mock_get_image_id_success(image_id, 1)
        self.stub_SubnetConstraint_validate()
        self.patchobject(nic, 'client', return_value=FakeNeutron())

        self.patchobject(neutron.NeutronClientPlugin,
                         '_create',
                         return_value=FakeNeutron())

        self.patchobject(nova.NovaClientPlugin, 'client', return_value=self.fc)

        # need to resolve the template functions
        server_userdata = instance.client_plugin().build_userdata(
            metadata, instance.properties['UserData'], 'ec2-user')
        self.patchobject(nova.NovaClientPlugin,
                         'build_userdata',
                         return_value=server_userdata)
        self.patchobject(self.fc.servers, 'create', return_value=return_server)

        # create network interface
        scheduler.TaskRunner(nic.create)()
        self.stack.resources["nic1"] = nic

        scheduler.TaskRunner(instance.create)()

        self.fc.servers.create.assert_called_once_with(
            image=1,
            flavor=3,
            key_name='test',
            name=utils.PhysName(stack_name, instance.name),
            security_groups=None,
            userdata=server_userdata,
            scheduler_hints=None,
            meta=None,
            nics=[{
                'port-id': '64d913c1-bcb1-42d2-8f0a-9593dbcaf251'
            }],
            availability_zone=None,
            block_device_mapping=None)
        self.m_f_i.assert_called_with(image_id)
        nova.NovaClientPlugin.build_userdata.assert_called_once_with(
            metadata, instance.properties['UserData'], 'ec2-user')
        neutron.NeutronClientPlugin._create.assert_called_once_with()
        nova.NovaClientPlugin.client.assert_called_with()
        glance.GlanceClientPlugin.find_image_by_name_or_id.assert_called_with(
            image_id)
        return instance