예제 #1
0
    def handle(self, *args, **options):
        if len(args) > 0:
            raise CommandError("Command takes no arguments")

        clustername = options['clustername']
        port = options['port']
        username = options['username']
        password = options['password']
        hypervisor = options["hypervisor"]

        if not (clustername and username and password):
            raise CommandError("Clustername, user and pass must be supplied")

        # Ensure correctness of credentials
        if options['check']:
            check_backend_credentials(clustername, port, username, password)

        kw = {
            "clustername": clustername,
            "port": port,
            "username": username,
            "password": password,
            "drained": True
        }

        if hypervisor:
            kw["hypervisor"] = hypervisor
        # Create the new backend in database
        try:
            backend = Backend.objects.create(**kw)
        except IntegrityError as e:
            raise CommandError("Cannot create backend: %s\n" % e)

        self.stdout.write('\nSuccessfully created backend with id %d\n' %
                          backend.id)

        if not options['check']:
            return

        self.stdout.write('\rRetrieving backend resources:\n')
        resources = get_physical_resources(backend)
        attr = ['mfree', 'mtotal', 'dfree', 'dtotal', 'pinst_cnt', 'ctotal']

        table = [[str(resources[x]) for x in attr]]
        pprint_table(self.stdout, table, attr)

        update_resources(backend, resources)
예제 #2
0
    def handle(self, *args, **options):
        if len(args) > 0:
            raise CommandError("Command takes no arguments")

        clustername = options['clustername']
        port = options['port']
        username = options['username']
        password = options['password']
        hypervisor = options["hypervisor"]

        if not (clustername and username and password):
            raise CommandError("Clustername, user and pass must be supplied")

        # Ensure correctness of credentials
        if options['check']:
            check_backend_credentials(clustername, port, username, password)

        kw = {"clustername": clustername,
              "port": port,
              "username": username,
              "password": password,
              "drained": True}

        if hypervisor:
            kw["hypervisor"] = hypervisor
        # Create the new backend in database
        try:
            backend = Backend.objects.create(**kw)
        except IntegrityError as e:
            raise CommandError("Cannot create backend: %s\n" % e)

        self.stdout.write('\nSuccessfully created backend with id %d\n' %
                          backend.id)

        if not options['check']:
            return

        self.stdout.write('\rRetrieving backend resources:\n')
        resources = get_physical_resources(backend)
        attr = ['mfree', 'mtotal', 'dfree', 'dtotal', 'pinst_cnt', 'ctotal']

        table = [[str(resources[x]) for x in attr]]
        pprint_table(self.stdout, table, attr)

        update_resources(backend, resources)
예제 #3
0
    def create_backend(self, clustername, port, username, password, public,
                       hypervisor=None, initialize=True):
            kw = {"clustername": clustername,
                  "port": port,
                  "username": username,
                  "password": password,
                  "public": public,
                  "drained": True}

            if hypervisor:
                kw["hypervisor"] = hypervisor

            # Create the new backend in database
            try:
                backend = Backend.objects.create(**kw)
            except IntegrityError as e:
                raise CommandError("Cannot create backend: %s\n" % e)

            self.stderr.write("Successfully created backend with id %d\n"
                              % backend.id)

            if not initialize:
                return

            self.stderr.write("Retrieving backend resources:\n")
            resources = backend_mod.get_physical_resources(backend)
            attr = ['mfree', 'mtotal', 'dfree',
                    'dtotal', 'pinst_cnt', 'ctotal']

            table = [[str(resources[x]) for x in attr]]
            pprint_table(self.stdout, table, attr)

            backend_mod.update_backend_resources(backend, resources)
            backend_mod.update_backend_disk_templates(backend)

            networks = Network.objects.filter(deleted=False, public=True)
            if not networks:
                return

            self.stderr.write("Creating the following public:\n")
            headers = ("ID", "Name", 'IPv4 Subnet',
                       "IPv6 Subnet", 'Mac Prefix')
            table = []

            for net in networks:
                subnet4 = net.subnet4.cidr if net.subnet4 else None
                subnet6 = net.subnet6.cidr if net.subnet6 else None
                table.append((net.id, net.backend_id, subnet4,
                              subnet6, str(net.mac_prefix)))
            pprint_table(self.stdout, table, headers)

            for net in networks:
                net.create_backend_network(backend)
                result = backend_mod.create_network_synced(net, backend)
                if result[0] != "success":
                    self.stderr.write('\nError Creating Network %s: %s\n'
                                      % (net.backend_id, result[1]))
                else:
                    self.stderr.write('Successfully created Network: %s\n'
                                      % net.backend_id)
                result = backend_mod.connect_network_synced(network=net,
                                                            backend=backend)
                if result[0] != "success":
                    self.stderr.write('\nError Connecting Network %s: %s\n'
                                      % (net.backend_id, result[1]))
                else:
                    self.stderr.write('Successfully connected Network: %s\n'
                                      % net.backend_id)
예제 #4
0
    def create_backend(self,
                       clustername,
                       port,
                       username,
                       password,
                       hypervisor=None,
                       initialize=True):
        kw = {
            "clustername": clustername,
            "port": port,
            "username": username,
            "password": password,
            "drained": True
        }

        if hypervisor:
            kw["hypervisor"] = hypervisor

        # Create the new backend in database
        try:
            backend = Backend.objects.create(**kw)
        except IntegrityError as e:
            raise CommandError("Cannot create backend: %s\n" % e)

        self.stderr.write("Successfully created backend with id %d\n" %
                          backend.id)

        if not initialize:
            return

        self.stderr.write("Retrieving backend resources:\n")
        resources = backend_mod.get_physical_resources(backend)
        attr = ['mfree', 'mtotal', 'dfree', 'dtotal', 'pinst_cnt', 'ctotal']

        table = [[str(resources[x]) for x in attr]]
        pprint_table(self.stdout, table, attr)

        backend_mod.update_backend_resources(backend, resources)
        backend_mod.update_backend_disk_templates(backend)

        networks = Network.objects.filter(deleted=False, public=True)
        if not networks:
            return

        self.stderr.write("Creating the following public:\n")
        headers = ("ID", "Name", 'IPv4 Subnet', "IPv6 Subnet", 'Mac Prefix')
        table = []

        for net in networks:
            subnet4 = net.subnet4.cidr if net.subnet4 else None
            subnet6 = net.subnet6.cidr if net.subnet6 else None
            table.append((net.id, net.backend_id, subnet4, subnet6,
                          str(net.mac_prefix)))
        pprint_table(self.stdout, table, headers)

        for net in networks:
            net.create_backend_network(backend)
            result = backend_mod.create_network_synced(net, backend)
            if result[0] != "success":
                self.stderr.write('\nError Creating Network %s: %s\n' %
                                  (net.backend_id, result[1]))
            else:
                self.stderr.write('Successfully created Network: %s\n' %
                                  net.backend_id)
            result = backend_mod.connect_network_synced(network=net,
                                                        backend=backend)
            if result[0] != "success":
                self.stderr.write('\nError Connecting Network %s: %s\n' %
                                  (net.backend_id, result[1]))
            else:
                self.stderr.write('Successfully connected Network: %s\n' %
                                  net.backend_id)