예제 #1
0
    def create_deployment(self):
        dpl_file_name = ".".join((self.deployment_name, "json"))
        dpl_path = os.path.join(self.rally_deployment_dir, dpl_file_name)
        logging.debug("deployment config file path is %s" % dpl_path)

        if not os.path.isfile(dpl_path):
            err_msg = "Cannot find deployment config file for rally."
            raise HealthException(err_msg, self.url)

        deployments = db.deployment_list(name=self.deployment_name)
        if deployments:
            # Destroy the previous deployment
            uuid = deployments[0].uuid
            self.delete_deployment_and_tasks(uuid)
            logging.info("Destroy previous deployment!")

        # Create deployment
        command = "rally deployment create --filename=%s --name=%s" % (dpl_path, self.deployment_name)

        logging.info(command)
        returncode, output, err_msg = self.exec_cli(command)
        if returncode > 0:
            # Send error message to Compass. Rally failed.
            raise HealthException(err_msg, self.url)

        deployment = db.deployment_list(name=self.deployment_name)[0]

        return deployment.uuid
예제 #2
0
    def create_deployment(self):
        dpl_file_name = '.'.join((self.deployment_name, 'json'))
        dpl_path = os.path.join(self.rally_deployment_dir, dpl_file_name)
        logging.info('deployment config file path is %s' % dpl_path)

        if not os.path.isfile(dpl_path):
            err_msg = 'Cannot find deployment config file for rally.'
            raise HealthException(err_msg, self.url)

        deployments = db.deployment_list(name=self.deployment_name)
        if deployments:
            # Destroy the previous deployment
            uuid = deployments[0].uuid
            self.delete_deployment_and_tasks(uuid)
            logging.info("Destroy previous deployment!")

        # Create deployment
        command = 'rally deployment create --filename=%s --name=%s' \
                  % (dpl_path, self.deployment_name)

        logging.info(command)
        returncode, output, err_msg = self.exec_cli(command)
        if returncode > 0:
            # Send error message to Compass. Rally failed.
            raise HealthException(err_msg, self.url)

        deployment = db.deployment_list(name=self.deployment_name)[0]

        return deployment.uuid
예제 #3
0
 def test_deployment_list_parent(self):
     deploy = db.deployment_create({})
     subdeploy1 = db.deployment_create({'parent_uuid': deploy.uuid})
     subdeploy2 = db.deployment_create({'parent_uuid': deploy.uuid})
     self.assertEqual([deploy.uuid], [d.uuid for d in db.deployment_list()])
     subdeploys = db.deployment_list(parent_uuid=deploy.uuid)
     self.assertEqual(set([subdeploy1.uuid, subdeploy2.uuid]),
                      set([d.uuid for d in subdeploys]))
예제 #4
0
 def test_deployment_list_parent(self):
     deploy = db.deployment_create({})
     subdeploy1 = db.deployment_create({'parent_uuid': deploy.uuid})
     subdeploy2 = db.deployment_create({'parent_uuid': deploy.uuid})
     self.assertEqual([deploy.uuid], [d.uuid for d in db.deployment_list()])
     subdeploys = db.deployment_list(parent_uuid=deploy.uuid)
     self.assertEqual(set([subdeploy1.uuid, subdeploy2.uuid]),
                      set([d.uuid for d in subdeploys]))
예제 #5
0
파일: test_api.py 프로젝트: Ch00k/rally
 def test_deployment_list_with_status(self):
     deploy_one = db.deployment_create({})
     deploy_two = db.deployment_create({
         'config': {},
         'status': consts.DeployStatus.DEPLOY_FAILED,
     })
     deploys = db.deployment_list(status=consts.DeployStatus.DEPLOY_INIT)
     self.assertEqual(len(deploys), 1)
     self.assertEqual(deploys[0]['uuid'], deploy_one['uuid'])
     deploys = db.deployment_list(status=consts.DeployStatus.DEPLOY_FAILED)
     self.assertEqual(len(deploys), 1)
     self.assertEqual(deploys[0]['uuid'], deploy_two['uuid'])
     deploys = db.deployment_list(
         status=consts.DeployStatus.DEPLOY_FINISHED)
     self.assertEqual(len(deploys), 0)
예제 #6
0
 def test_deployment_delete(self):
     deploy_one = db.deployment_create({})
     deploy_two = db.deployment_create({})
     db.deployment_delete(deploy_two['uuid'])
     deploys = db.deployment_list()
     self.assertEqual(len(deploys), 1)
     self.assertEqual(deploys[0]['uuid'], deploy_one['uuid'])
예제 #7
0
 def test_deployment_create(self):
     deploy = db.deployment_create({"config": {"opt": "val"}})
     deploys = db.deployment_list()
     self.assertEqual(len(deploys), 1)
     self.assertEqual(deploy["uuid"], deploys[0]["uuid"])
     self.assertEqual(deploy["status"], consts.DeployStatus.DEPLOY_INIT)
     self.assertEqual(deploy["config"], {"opt": "val"})
예제 #8
0
 def test_deployment_delete(self):
     deploy_one = db.deployment_create({})
     deploy_two = db.deployment_create({})
     db.deployment_delete(deploy_two['uuid'])
     deploys = db.deployment_list()
     self.assertEqual(len(deploys), 1)
     self.assertEqual(deploys[0]['uuid'], deploy_one['uuid'])
예제 #9
0
 def test_deployment_create(self):
     deploy = db.deployment_create({'config': {'opt': 'val'}})
     deploys = db.deployment_list()
     self.assertEqual(len(deploys), 1)
     self.assertEqual(deploy['uuid'], deploys[0]['uuid'])
     self.assertEqual(deploy['status'], consts.DeployStatus.DEPLOY_INIT)
     self.assertEqual(deploy['config'], {'opt': 'val'})
예제 #10
0
 def test_deployment_create(self):
     deploy = db.deployment_create({'config': {'opt': 'val'}})
     deploys = db.deployment_list()
     self.assertEqual(len(deploys), 1)
     self.assertEqual(deploy['uuid'], deploys[0]['uuid'])
     self.assertEqual(deploy['status'], consts.DeployStatus.DEPLOY_INIT)
     self.assertEqual(deploy['config'], {'opt': 'val'})
예제 #11
0
 def test_deployment_create(self):
     deploy = db.deployment_create({"config": {"opt": "val"}})
     deploys = db.deployment_list()
     self.assertEqual(len(deploys), 1)
     self.assertEqual(deploy["uuid"], deploys[0]["uuid"])
     self.assertEqual(deploy["status"], consts.DeployStatus.DEPLOY_INIT)
     self.assertEqual(deploy["config"], {"opt": "val"})
예제 #12
0
 def test_deployment_list_with_status_and_name(self):
     deploy_one = db.deployment_create({})
     deploy_two = db.deployment_create({
         'config': {},
         'status': consts.DeployStatus.DEPLOY_FAILED,
     })
     deploy_three = db.deployment_create({'name': 'deployment_name'})
     deploys = db.deployment_list(status=consts.DeployStatus.DEPLOY_INIT)
     self.assertEqual(len(deploys), 2)
     self.assertEqual(deploys[0]['uuid'], deploy_one['uuid'])
     deploys = db.deployment_list(status=consts.DeployStatus.DEPLOY_FAILED)
     self.assertEqual(len(deploys), 1)
     self.assertEqual(deploys[0]['uuid'], deploy_two['uuid'])
     deploys = db.deployment_list(
         status=consts.DeployStatus.DEPLOY_FINISHED)
     self.assertEqual(len(deploys), 0)
     deploys = db.deployment_list(name='deployment_name')
     self.assertEqual(deploys[0]['uuid'], deploy_three['uuid'])
     self.assertEqual(len(deploys), 1)
예제 #13
0
파일: main.py 프로젝트: hyunsun/rally
    def list(self):
        """Print list of deployments."""
        headers = ['uuid', 'created_at', 'name', 'status']
        table = prettytable.PrettyTable(headers)

        for t in db.deployment_list():
            r = [str(t[column]) for column in headers]
            table.add_row(r)

        print(table)
예제 #14
0
    def test_deployment_create_several(self):
        # Create a deployment
        deploys = db.deployment_list()
        self.assertEqual(len(deploys), 0)
        deploy_one = db.deployment_create({'config': {'opt1': 'val1'}})
        deploys = db.deployment_list()
        self.assertEqual(len(deploys), 1)
        self.assertEqual(deploy_one['uuid'], deploys[0]['uuid'])
        self.assertEqual(deploy_one['status'], consts.DeployStatus.DEPLOY_INIT)
        self.assertEqual(deploy_one['config'], {'opt1': 'val1'})

        # Create another deployment and sure that they are different
        deploy_two = db.deployment_create({'config': {'opt2': 'val2'}})
        deploys = db.deployment_list()
        self.assertEqual(len(deploys), 2)
        self.assertEqual([deploy_one['uuid'], deploy_two['uuid']],
                         [deploy['uuid'] for deploy in deploys])
        self.assertNotEqual(deploy_one['uuid'], deploy_two['uuid'])
        self.assertEqual(deploy_two['status'], consts.DeployStatus.DEPLOY_INIT)
        self.assertEqual(deploy_two['config'], {'opt2': 'val2'})
예제 #15
0
    def test_deployment_create_several(self):
        # Create a deployment
        deploys = db.deployment_list()
        self.assertEqual(len(deploys), 0)
        deploy_one = db.deployment_create({'config': {'opt1': 'val1'}})
        deploys = db.deployment_list()
        self.assertEqual(len(deploys), 1)
        self.assertEqual(deploy_one['uuid'], deploys[0]['uuid'])
        self.assertEqual(deploy_one['status'], consts.DeployStatus.DEPLOY_INIT)
        self.assertEqual(deploy_one['config'], {'opt1': 'val1'})

        # Create another deployment and sure that they are different
        deploy_two = db.deployment_create({'config': {'opt2': 'val2'}})
        deploys = db.deployment_list()
        self.assertEqual(len(deploys), 2)
        self.assertEqual([deploy_one['uuid'], deploy_two['uuid']],
                         [deploy['uuid'] for deploy in deploys])
        self.assertNotEqual(deploy_one['uuid'], deploy_two['uuid'])
        self.assertEqual(deploy_two['status'], consts.DeployStatus.DEPLOY_INIT)
        self.assertEqual(deploy_two['config'], {'opt2': 'val2'})
예제 #16
0
 def test_deployment_list_with_status_and_name(self):
     deploy_one = db.deployment_create({})
     deploy_two = db.deployment_create({
         "config": {},
         "status": consts.DeployStatus.DEPLOY_FAILED,
     })
     deploy_three = db.deployment_create({"name": "deployment_name"})
     deploys = db.deployment_list(status=consts.DeployStatus.DEPLOY_INIT)
     deploys.sort(key=lambda x: x["id"])
     self.assertEqual(len(deploys), 2)
     self.assertEqual(deploys[0]["uuid"], deploy_one["uuid"])
     deploys = db.deployment_list(status=consts.DeployStatus.DEPLOY_FAILED)
     self.assertEqual(len(deploys), 1)
     self.assertEqual(deploys[0]["uuid"], deploy_two["uuid"])
     deploys = db.deployment_list(
         status=consts.DeployStatus.DEPLOY_FINISHED)
     self.assertEqual(len(deploys), 0)
     deploys = db.deployment_list(name="deployment_name")
     self.assertEqual(deploys[0]["uuid"], deploy_three["uuid"])
     self.assertEqual(len(deploys), 1)
예제 #17
0
    def test_deployment_create_several(self):
        # Create a deployment
        deploys = db.deployment_list()
        self.assertEqual(len(deploys), 0)
        deploy_one = db.deployment_create({"config": {"opt1": "val1"}})
        deploys = db.deployment_list()
        self.assertEqual(len(deploys), 1)
        self.assertEqual(deploy_one["uuid"], deploys[0]["uuid"])
        self.assertEqual(deploy_one["status"], consts.DeployStatus.DEPLOY_INIT)
        self.assertEqual(deploy_one["config"], {"opt1": "val1"})

        # Create another deployment and sure that they are different
        deploy_two = db.deployment_create({"config": {"opt2": "val2"}})
        deploys = db.deployment_list()
        self.assertEqual(len(deploys), 2)
        self.assertEqual(set([deploy_one["uuid"], deploy_two["uuid"]]),
                         set([deploy["uuid"] for deploy in deploys]))
        self.assertNotEqual(deploy_one["uuid"], deploy_two["uuid"])
        self.assertEqual(deploy_two["status"], consts.DeployStatus.DEPLOY_INIT)
        self.assertEqual(deploy_two["config"], {"opt2": "val2"})
예제 #18
0
    def test_deployment_create_several(self):
        # Create a deployment
        deploys = db.deployment_list()
        self.assertEqual(len(deploys), 0)
        deploy_one = db.deployment_create({"config": {"opt1": "val1"}})
        deploys = db.deployment_list()
        self.assertEqual(len(deploys), 1)
        self.assertEqual(deploy_one["uuid"], deploys[0]["uuid"])
        self.assertEqual(deploy_one["status"], consts.DeployStatus.DEPLOY_INIT)
        self.assertEqual(deploy_one["config"], {"opt1": "val1"})

        # Create another deployment and sure that they are different
        deploy_two = db.deployment_create({"config": {"opt2": "val2"}})
        deploys = db.deployment_list()
        self.assertEqual(len(deploys), 2)
        self.assertEqual(set([deploy_one["uuid"], deploy_two["uuid"]]),
                         set([deploy["uuid"] for deploy in deploys]))
        self.assertNotEqual(deploy_one["uuid"], deploy_two["uuid"])
        self.assertEqual(deploy_two["status"], consts.DeployStatus.DEPLOY_INIT)
        self.assertEqual(deploy_two["config"], {"opt2": "val2"})
예제 #19
0
 def test_deployment_list_with_status_and_name(self):
     deploy_one = db.deployment_create({})
     deploy_two = db.deployment_create({
         "config": {},
         "status":
         consts.DeployStatus.DEPLOY_FAILED,
     })
     deploy_three = db.deployment_create({"name": "deployment_name"})
     deploys = db.deployment_list(status=consts.DeployStatus.DEPLOY_INIT)
     deploys.sort(key=lambda x: x["id"])
     self.assertEqual(len(deploys), 2)
     self.assertEqual(deploys[0]["uuid"], deploy_one["uuid"])
     deploys = db.deployment_list(status=consts.DeployStatus.DEPLOY_FAILED)
     self.assertEqual(len(deploys), 1)
     self.assertEqual(deploys[0]["uuid"], deploy_two["uuid"])
     deploys = db.deployment_list(
         status=consts.DeployStatus.DEPLOY_FINISHED)
     self.assertEqual(len(deploys), 0)
     deploys = db.deployment_list(name="deployment_name")
     self.assertEqual(deploys[0]["uuid"], deploy_three["uuid"])
     self.assertEqual(len(deploys), 1)
예제 #20
0
    def delete_deployment_and_tasks(self, deployment_uuid=None):
        if not deployment_uuid:
            deployments = db.deployment_list(name=self.deployment_name)
            if not deployments:
                return

            deployment_uuid = deployments[0].uuid

        self.cleanup_previous_tasks(deployment_uuid)
        command = "rally deployment destroy --deployment %s" % self.deployment_name

        returncode, output, err_msg = self.exec_cli(command)
        if returncode > 0:
            raise HealthException(err_msg, self.url)

        logging.info("Destroyed the deployment '%s'" % self.deployment_name)
예제 #21
0
    def delete_deployment_and_tasks(self, deployment_uuid=None):
        if not deployment_uuid:
            deployments = db.deployment_list(name=self.deployment_name)
            if not deployments:
                return

            deployment_uuid = deployments[0].uuid

        self.cleanup_previous_tasks(deployment_uuid)
        command = 'rally deployment destroy --deployment %s'\
                  % self.deployment_name

        returncode, output, err_msg = self.exec_cli(command)
        if returncode > 0:
            raise HealthException(err_msg, self.url)

        logging.info("Destroyed the deployment '%s'" % self.deployment_name)
예제 #22
0
    def list(self, deployment_list=None):
        """Print list of deployments."""
        headers = ['uuid', 'created_at', 'name', 'status', 'active']
        current_deploy_id = envutils.get_global('RALLY_DEPLOYMENT')
        deployment_list = deployment_list or db.deployment_list()

        table_rows = []
        if deployment_list:
            for t in deployment_list:
                r = [str(t[column]) for column in headers[:-1]]
                r.append("" if t["uuid"] != current_deploy_id else "*")
                table_rows.append(utils.Struct(**dict(zip(headers, r))))
            common_cliutils.print_list(table_rows, headers)
        else:
            print(_("There are no deployments. "
                    "To create a new deployment, use:"
                    "\nrally deployment create"))
예제 #23
0
파일: deployment.py 프로젝트: Ch00k/rally
    def list(self, deployment_list=None):
        """Print list of deployments."""
        headers = ['uuid', 'created_at', 'name', 'status', 'active']
        current_deploy_id = envutils.get_global('RALLY_DEPLOYMENT')
        deployment_list = deployment_list or db.deployment_list()
        if deployment_list:
            table = prettytable.PrettyTable(headers)

            for t in deployment_list:
                r = [str(t[column]) for column in headers[:-1]]
                r.append("" if t["uuid"] != current_deploy_id else "*")
                table.add_row(r)

            print(table)
        else:
            print(_("There are no deployments. "
                    "To create a new deployment, use:"
                    "\nrally deployment create"))
예제 #24
0
    def list(self, deployment_list=None):
        """Print list of deployments."""
        headers = ['uuid', 'created_at', 'name', 'status', 'active']
        current_deploy_id = envutils.get_global('RALLY_DEPLOYMENT')
        deployment_list = deployment_list or db.deployment_list()
        if deployment_list:
            table = prettytable.PrettyTable(headers)

            for t in deployment_list:
                r = [str(t[column]) for column in headers[:-1]]
                r.append("" if t["uuid"] != current_deploy_id else "*")
                table.add_row(r)

            print(table)
        else:
            print(_("There are no deployments. "
                    "To create a new deployment, use:"
                    "\nrally deployment create"))
예제 #25
0
    def list(self, deployment_list=None):
        """Print list of deployments."""
        headers = ['uuid', 'created_at', 'name', 'status', 'active']
        current_deploy_id = envutils.get_global('RALLY_DEPLOYMENT')
        deployment_list = deployment_list or db.deployment_list()

        table_rows = []
        if deployment_list:
            for t in deployment_list:
                r = [str(t[column]) for column in headers[:-1]]
                r.append("" if t["uuid"] != current_deploy_id else "*")
                table_rows.append(utils.Struct(**dict(zip(headers, r))))
            common_cliutils.print_list(table_rows, headers)
        else:
            print(
                _("There are no deployments. "
                  "To create a new deployment, use:"
                  "\nrally deployment create"))
예제 #26
0
파일: use.py 프로젝트: sahanasj/rally
    def deployment(self, deploy_id=None, name=None):
        """Set active deployment.

        :param deploy_id: a UUID of a deployment
        """

        if not (name or deploy_id):
            print('You should specify --name or --uuid of deployment')
            return 1

        deploy = None

        if name:
            deployments = db.deployment_list(name=name)
            if len(deployments) > 1:
                print("Multiple deployments found by name: `%s`" % name)
                return 1
            elif not deployments:
                print("There is no `%s` deployment" % name)
                return 1
            else:
                deploy = deployments[0]
                deploy_id = deploy["uuid"]

        try:
            deploy = deploy or db.deployment_get(deploy_id)
            print('Using deployment: %s' % deploy_id)
            self._ensure_rally_configuration_dir_exists()
            self._update_attribute_in_global_file('RALLY_DEPLOYMENT',
                                                  deploy_id)
            self._update_openrc_deployment_file(
                deploy_id,
                deploy.get('admin') or deploy.get('users')[0])
            print('~/.rally/openrc was updated\n\nHINTS:\n'
                  '* To get your cloud resources, run:\n\t'
                  'rally show [flavors|images|keypairs|networks|secgroups]\n'
                  '\n* To use standard OpenStack clients, set up your env by '
                  'running:\n\tsource ~/.rally/openrc\n'
                  '  OpenStack clients are now configured, e.g run:\n\t'
                  'glance image-list')
        except exceptions.DeploymentNotFound:
            print('Deployment %s is not found.' % deploy_id)
            return 1
예제 #27
0
    def list(self, deployment_list=None):
        """List existing deployments."""

        headers = ["uuid", "created_at", "name", "status", "active"]
        current_deployment = envutils.get_global("RALLY_DEPLOYMENT")
        deployment_list = deployment_list or db.deployment_list()

        table_rows = []
        if deployment_list:
            for t in deployment_list:
                r = [str(t[column]) for column in headers[:-1]]
                r.append("" if t["uuid"] != current_deployment else "*")
                table_rows.append(utils.Struct(**dict(zip(headers, r))))
            cliutils.print_list(table_rows, headers,
                                sortby_index=headers.index("created_at"))
        else:
            print(_("There are no deployments. "
                    "To create a new deployment, use:"
                    "\nrally deployment create"))
예제 #28
0
    def deployment(self, deploy_id=None, name=None):
        """Set active deployment.

        :param deploy_id: a UUID of a deployment
        """

        if not (name or deploy_id):
            print('You should specify --name or --uuid of deployment')
            return 1

        deploy = None

        if name:
            deployments = db.deployment_list(name=name)
            if len(deployments) > 1:
                print("Multiple deployments found by name: `%s`" % name)
                return 1
            elif not deployments:
                print("There is no `%s` deployment" % name)
                return 1
            else:
                deploy = deployments[0]
                deploy_id = deploy["uuid"]

        try:
            deploy = deploy or db.deployment_get(deploy_id)
            print('Using deployment: %s' % deploy_id)
            self._ensure_rally_configuration_dir_exists()
            self._update_attribute_in_global_file('RALLY_DEPLOYMENT',
                                                  deploy_id)
            self._update_openrc_deployment_file(
                deploy_id, deploy.get('admin') or deploy.get('users')[0])
            print ('~/.rally/openrc was updated\n\nHINTS:\n'
                   '* To get your cloud resources, run:\n\t'
                   'rally show [flavors|images|keypairs|networks|secgroups]\n'
                   '\n* To use standard OpenStack clients, set up your env by '
                   'running:\n\tsource ~/.rally/openrc\n'
                   '  OpenStack clients are now configured, e.g run:\n\t'
                   'glance image-list')
        except exceptions.DeploymentNotFound:
            print('Deployment %s is not found.' % deploy_id)
            return 1
예제 #29
0
    def list(self, deployment_list=None):
        """List existing deployments."""

        headers = ["uuid", "created_at", "name", "status", "active"]
        current_deployment = envutils.get_global("RALLY_DEPLOYMENT")
        deployment_list = deployment_list or db.deployment_list()

        table_rows = []
        if deployment_list:
            for t in deployment_list:
                r = [str(t[column]) for column in headers[:-1]]
                r.append("" if t["uuid"] != current_deployment else "*")
                table_rows.append(utils.Struct(**dict(zip(headers, r))))
            cliutils.print_list(table_rows,
                                headers,
                                sortby_index=headers.index("created_at"))
        else:
            print(
                _("There are no deployments. "
                  "To create a new deployment, use:"
                  "\nrally deployment create"))
예제 #30
0
 def cleanup(self):
     subdeploys = db.deployment_list(parent_uuid=self.deployment["uuid"])
     for subdeploy in subdeploys:
         rally.api.Deployment.destroy(subdeploy["uuid"])
예제 #31
0
 def cleanup(self):
     subdeploys = db.deployment_list(parent_uuid=self.deployment["uuid"])
     for subdeploy in subdeploys:
         rally.api.Deployment.destroy(subdeploy["uuid"])
예제 #32
0
 def test_deployment_list(self):
     deploy_one = db.deployment_create({})
     deploy_two = db.deployment_create({})
     deploys = db.deployment_list()
     self.assertEqual(sorted([deploy_one['uuid'], deploy_two['uuid']]),
                      sorted([deploy['uuid'] for deploy in deploys]))
예제 #33
0
 def cleanup(self):
     subdeploys = db.deployment_list(parent_uuid=self.deployment['uuid'])
     for subdeploy in subdeploys:
         orchestrator.api.destroy_deploy(subdeploy['uuid'])
예제 #34
0
 def cleanup(self):
     subdeploys = db.deployment_list(parent_uuid=self.deployment['uuid'])
     for subdeploy in subdeploys:
         orchestrator.api.destroy_deploy(subdeploy['uuid'])
예제 #35
0
 def test_deployment_list(self):
     deploy_one = db.deployment_create({})
     deploy_two = db.deployment_create({})
     deploys = db.deployment_list()
     self.assertEqual(sorted([deploy_one['uuid'], deploy_two['uuid']]),
                      sorted([deploy['uuid'] for deploy in deploys]))