Пример #1
0
    def prepare_volume(self):

        self.SNAPSHOT_NAME = self.getUniqueString()
        self.SNAPSHOT_ID = None
        self.VOLUME_NAME = self.getUniqueString()
        self.VOLUME_ID = None

        volume = self.conn.block_storage.create_volume(name=self.VOLUME_NAME,
                                                       size=1)
        resource.wait_for_status(session=self.conn.block_storage,
                                 resource=volume,
                                 status='available',
                                 failures=['error'],
                                 interval=2,
                                 wait=120)
        # assert isinstance(volume, _volume.Volume)
        self.assertEqual(self.VOLUME_NAME, volume.name)
        self.VOLUME_ID = volume.id
        snapshot = self.conn.block_storage.create_snapshot(
            name=self.SNAPSHOT_NAME, volume_id=self.VOLUME_ID)
        resource.wait_for_status(session=self.conn.block_storage,
                                 resource=snapshot,
                                 status='available',
                                 failures=['error'],
                                 interval=2,
                                 wait=120)
        # assert isinstance(snapshot, _snapshot.Snapshot)
        self.assertEqual(self.SNAPSHOT_NAME, snapshot.name)
        self.SNAPSHOT_ID = snapshot.id
    def test_wait_for_status(self):
        self.sess.get = mock.MagicMock()
        self.sess.get.side_effect = [self.build, self.active]
        sot = FakeResource.new(**fake_data)

        self.assertEqual(sot, resource.wait_for_status(
            self.sess, sot, 'ACTIVE', [], 1, 2))
 def wait_for_recordset(self,
                        recordset,
                        status='ACTIVE',
                        failures=None,
                        interval=2,
                        wait=180,
                        attribute='status'):
     """Wait for an recordset to be in a particular status.
     :param zone:
         The :class:`~otcextensions.sdk.dns.v2.recordset.Recordset`
         or recordset ID to wait on to reach the specified status.
     :param status: Desired status.
     :param failures:
         Statuses that would be interpreted as failures.
     :type failures: :py:class:`list`
     :param int interval:
         Number of seconds to wait before to consecutive checks.
         Default to 2.
     :param int wait:
         Maximum number of seconds to wait before the change.
         Default to 180
     :return: The resource is returned on success.
     :raises: :class:`~openstack.exceptions.ResourceTimeout` if transition
              to the desired status failed to occur in specified seconds.
     :raises: :class:`~openstack.exceptions.ResourceFailure` if the resource
              has transited to one of the failure statuses.
     """
     failures = ['ERROR'] if failures is None else failures
     return resource.wait_for_status(self, recordset, status, failures,
                                     interval, wait)
    def test_wait_for_status(self):
        self.sess.get = mock.MagicMock()
        self.sess.get.side_effect = [self.build, self.active]
        sot = FakeResource.new(**fake_data)

        self.assertEqual(sot, resource.wait_for_status(
            self.sess, sot, 'ACTIVE', [], 1, 2))
Пример #5
0
    def wait_for_status(self,
                        value,
                        status,
                        failures=None,
                        interval=2,
                        wait=120):
        """Wait for a resource to be in a particular status.

        :param value: The resource to wait on to reach the status. The
                      resource must have a status attribute.
        :type value: :class:`~openstack.resource.Resource`
        :param status: Desired status of the resource.
        :param list failures: Statuses that would indicate the transition
                              failed such as 'ERROR'.
        :param interval: Number of seconds to wait between checks.
        :param wait: Maximum number of seconds to wait for the change.

        :return: Method returns resource on success.
        :raises: :class:`~openstack.exceptions.ResourceTimeout` transition
                 to status failed to occur in wait seconds.
        :raises: :class:`~openstack.exceptions.ResourceFailure` resource
                 transitioned to one of the failure states.
        :raises: :class:`~AttributeError` if the resource does not have a
                 status attribute
        """
        failures = [] if failures is None else failures
        return resource.wait_for_status(self, value, status, failures,
                                        interval, wait)
Пример #6
0
    def wait_for_status(self, res, status, failures=None, interval=2,
                        wait=120):
        """Wait for a resource to be in a particular status.

        :param res: The resource to wait on to reach the specified status.
                    The resource must have a ``status`` attribute.
        :type resource: A :class:`~openstack.resource.Resource` object.
        :param status: Desired status.
        :param failures: Statuses that would be interpreted as failures.
        :type failures: :py:class:`list`
        :param interval: Number of seconds to wait before to consecutive
                         checks. Default to 2.
        :param wait: Maximum number of seconds to wait before the change.
                     Default to 120.
        :returns: The resource is returned on success.
        :raises: :class:`~openstack.exceptions.ResourceTimeout` if transition
                 to the desired status failed to occur in specified seconds.
        :raises: :class:`~openstack.exceptions.ResourceFailure` if the resource
                 has transited to one of the failure statuses.
        :raises: :class:`~AttributeError` if the resource does not have a
                ``status`` attribute.
        """
        failures = [] if failures is None else failures
        return resource.wait_for_status(
            self, res, status, failures, interval, wait)
Пример #7
0
    def wait_for_status(self, res, status='ACTIVE', failures=None,
                        interval=2, wait=120):
        """Wait for a resource to be in a particular status.

        :param res: The resource to wait on to reach the specified status.
                    The resource must have a ``status`` attribute.
        :type resource: A :class:`~openstack.resource.Resource` object.
        :param status: Desired status.
        :param failures: Statuses that would be interpreted as failures.
        :type failures: :py:class:`list`
        :param interval: Number of seconds to wait before to consecutive
                         checks. Default to 2.
        :param wait: Maximum number of seconds to wait before the change.
                     Default to 120.
        :returns: The resource is returned on success.
        :raises: :class:`~openstack.exceptions.ResourceTimeout` if transition
                 to the desired status failed to occur in specified seconds.
        :raises: :class:`~openstack.exceptions.ResourceFailure` if the resource
                 has transited to one of the failure statuses.
        :raises: :class:`~AttributeError` if the resource does not have a
                ``status`` attribute.
        """
        failures = ['Error'] if failures is None else failures
        return resource.wait_for_status(
            self, res, status, failures, interval, wait)
Пример #8
0
    def wait_for_group(self,
                       group,
                       status='INSERVICE',
                       failures=None,
                       interval=2,
                       wait=180):
        """Wait for a group to be in a particular status.

        :param group: The value can be the ID of a group
            or a :class:`~otcextensions.sdk.auto_scaling.v1.group.Group`
            instance
        :param status: Desired status.
        :param failures:
            Statuses that would be interpreted as failures.
        :type failures: :py:class:`list`
        :param int interval:
            Number of seconds to wait before to consecutive checks.
            Default to 2.
        :param int wait:
            Maximum number of seconds to wait before the change.
            Default to 180
        :return: The resource is returned on success.
        :raises: :class:`~openstack.exceptions.ResourceTimeout` if transition
                 to the desired status failed to occur in specified seconds.
        :raises: :class:`~openstack.exceptions.ResourceFailure` if the resource
                 has transited to one of the failure statuses.
        """
        group = self._get_resource(_group.Group, group)
        failures = ['ERROR'] if failures is None else failures
        return resource.wait_for_status(self, group, status, failures,
                                        interval, wait)
Пример #9
0
    def wait_for_cluster(self,
                         cluster,
                         status='Available',
                         failures=None,
                         interval=2,
                         wait=960):
        """Wait for a server to be in a particular status.

        :param cluster:
            The :class:`~otcextensions.sdk.cce.v3.cluster.Cluster` to wait on
            to reach the specified status.
        :param status: Desired status.
        :param failures:
            Statuses that would be interpreted as failures.
        :type failures: :py:class:`list`
        :param int interval:
            Number of seconds to wait before to consecutive checks.
            Default to 2.
        :param int wait:
            Maximum number of seconds to wait before the change.
            Default to 960.
        :returns: The resource is returned on success.
        :raises: :class:`~openstack.exceptions.ResourceTimeout` if transition
                 to the desired status failed to occur in specified seconds.
        :raises: :class:`~openstack.exceptions.ResourceFailure` if the resource
                 has transited to one of the failure statuses.
        """
        failures = ['ERROR'] if failures is None else failures
        return resource.wait_for_status(self,
                                        cluster,
                                        status,
                                        failures,
                                        interval,
                                        wait,
                                        attribute='status.status')
Пример #10
0
    def test_wait_for_status_nothing(self):
        self.sess.get = mock.MagicMock()
        sot = FakeResource.new(**fake_data)
        sot.status = 'ACTIVE'

        self.assertEqual(sot, resource.wait_for_status(
            self.sess, sot, 'ACTIVE', [], 1, 2))
        self.assertEqual([], self.sess.get.call_args_list)
Пример #11
0
 def wait_for_stack(self,
                    value,
                    status='CREATE_COMPLETE',
                    failures=['CREATE_FAILED'],
                    interval=2,
                    wait=120):
     return resource.wait_for_status(self.session, value, status, failures,
                                     interval, wait)
Пример #12
0
    def test_wait_for_status_nothing(self):
        self.sess.get = mock.MagicMock()
        sot = FakeResource.new(**fake_data)
        sot.status = 'ACTIVE'

        self.assertEqual(sot, resource.wait_for_status(
            self.sess, sot, 'ACTIVE', [], 1, 2))
        self.assertEqual([], self.sess.get.call_args_list)
Пример #13
0
 def wait_for_server(self,
                     server,
                     status='ACTIVE',
                     failures=['ERROR'],
                     interval=2,
                     wait=120):
     return resource.wait_for_status(self, server, status, failures,
                                     interval, wait)
Пример #14
0
 def wait_for_backup(self,
                     backup,
                     status='COMPLETED',
                     failures=None,
                     interval=2,
                     wait=300,
                     attribute='status'):
     failures = ['FAILED'] if failures is None else failures
     return resource.wait_for_status(self, backup, status, failures,
                                     interval, wait)
Пример #15
0
 def setUp(self):
     super(TestInstance, self).setUp()
     self._initialize_network()
     products = list(self.conn.dms.products())
     products_ids = [product.product_id for product in products]
     product_id = random.choice(products_ids)
     availability_zone_names = [
         product.availability_zones for product in products
         if product_id == product.product_id
     ]
     availability_zone_name = random.choice(
         sum(availability_zone_names, [])
     )
     availability_zone_id = [
         availability_zone.id
         for availability_zone in self.conn.dms.availability_zones()
         if availability_zone_name == availability_zone.code
     ]
     try:
         self.instance = self.conn.dms.create_instance(
             name=self.INSTANCE_NAME,
             engine="kafka", engine_version="2.3.0", storage=4800,
             router_id=self.ROUTER_ID, network_id=self.NET_ID,
             security_group_id=self.SG_ID,
             availability_zones=availability_zone_id,
             product_id=product_id,
             storage_spec_code="dms.physical.storage.ultra"
         )
     except exceptions.DuplicateResource:
         self.instance = self.conn.dms.find_instance(
             alias=self.INSTANCE_NAME
         )
     resource.wait_for_status(
         session=self.conn.dms,
         resource=self.instance,
         status='RUNNING',
         failures=['CREATEFAILED'],
         interval=5,
         wait=900)
     self.assertIn('instance_id', self.instance)
     self.instances.append(self.instance)
Пример #16
0
    def _create_subnet(self, remove=True):
        cidr: str = self.vpc.cidr
        gateway, _ = cidr.split("/")
        gateway = gateway[:-2] + ".1"  # .0 -> .1

        attrs = {
            'vpc_id': self.vpc.id,
            'name': 'test-subnet-' + self.seed,
            'cidr': cidr,
            'gateway_ip': gateway,
            'dns_list': [
                "100.125.4.25",
                "100.125.129.199",
            ],
        }
        subnet = self.conn.vpc.create_subnet(**attrs)
        resource.wait_for_status(self.conn.vpc, subnet, "ACTIVE", None, 2, 20)

        if remove:
            self.addCleanup(self._delete_subnet, subnet)
        return subnet
Пример #17
0
    def wait_for_load_balancer(self,
                               name_or_id,
                               status='ACTIVE',
                               failures=['ERROR'],
                               interval=2,
                               wait=300):
        lb = self._find(_lb.LoadBalancer, name_or_id, ignore_missing=False)

        return resource.wait_for_status(self,
                                        lb,
                                        status,
                                        failures,
                                        interval,
                                        wait,
                                        attribute='provisioning_status')
Пример #18
0
 def wait_for_job(self,
                  job_id,
                  status='success',
                  failures=None,
                  interval=5,
                  wait=3600,
                  attribute='status.status'):
     failures = ['FAILED'] if failures is None else failures
     job = self.get_job(job_id)
     return resource.wait_for_status(self,
                                     job,
                                     status,
                                     failures,
                                     interval,
                                     wait,
                                     attribute='status.status')
Пример #19
0
    def wait_for_job(self,
                     job_id,
                     status='success',
                     failures=None,
                     interval=5,
                     wait=3600,
                     attribute='status'):
        if self.service_type == 'rdsv3':
            status = 'completed'
            failures = ['failed']
        else:
            failures = ['FAIL'] if failures is None else failures

        job = Job.existing(id=job_id).fetch(self)
        return resource.wait_for_status(self,
                                        job,
                                        status,
                                        failures,
                                        interval,
                                        wait,
                                        attribute='status')
Пример #20
0
    def wait_for_status(self, value, status, failures=[], interval=2, wait=120):
        """Wait for a resource to be in a particular status.

        :param value: The resource to wait on to reach the status. The
                      resource must have a status attribute.
        :type value: :class:`~openstack.resource.Resource`
        :param status: Desired status of the resource.
        :param list failures: Statuses that would indicate the transition
                              failed such as 'ERROR'.
        :param interval: Number of seconds to wait between checks.
        :param wait: Maximum number of seconds to wait for the change.

        :return: Method returns resource on success.
        :raises: :class:`~openstack.exceptions.ResourceTimeout` transition
                 to status failed to occur in wait seconds.
        :raises: :class:`~openstack.exceptions.ResourceFailure` resource
                 transitioned to one of the failure states.
        :raises: :class:`~AttributeError` if the resource does not have a
                 status attribute
        """
        return resource.wait_for_status(self.session, value, status, failures, interval, wait)
Пример #21
0
 def wait_for_stack(self, value, status='CREATE_COMPLETE',
                    failures=['CREATE_FAILED'], interval=2, wait=120):
     return resource.wait_for_status(self.session, value, status,
                                     failures, interval, wait)
Пример #22
0
 def _delete_subnet(self, subnet):
     resource.wait_for_status(self.conn.vpc, subnet, "ACTIVE", None, 2, 20)
     self.conn.vpc.delete_subnet(subnet, ignore_missing=False)
     resource.wait_for_delete(self.conn.vpc, subnet, 2, 60)
Пример #23
0
    def wait_for_load_balancer(self, name_or_id, status='ACTIVE',
                               failures=['ERROR'], interval=2, wait=300):
        lb = self._find(_lb.LoadBalancer, name_or_id, ignore_missing=False)

        return resource.wait_for_status(self, lb, status, failures, interval,
                                        wait, attribute='provisioning_status')
 def wait_for_server(self, server, status='ACTIVE', failures=['ERROR'],
                     interval=2, wait=120):
     return resource.wait_for_status(self.session, server, status,
                                     failures, interval, wait)