コード例 #1
0
ファイル: callbacks.py プロジェクト: AthinaB/synnefo
def update_cluster(msg):
    operation = msg.get("operation")
    clustername = msg.get("cluster")
    if clustername is None:
        return
    if operation != "OP_CLUSTER_SET_PARAMS":
        return
    backend = Backend.objects.select_for_update().get(clustername=clustername)
    backend_mod.update_backend_disk_templates(backend)
    backend_mod.update_backend_resources(backend)
コード例 #2
0
ファイル: backend_allocator.py プロジェクト: grnet/synnefo
def refresh_backends_stats(backends):
    """ Refresh the statistics of the backends.

    Set db backend state to the actual state of the backend, if
    BACKEND_REFRESH_MIN time has passed.

    """

    now = datetime.datetime.now()
    delta = datetime.timedelta(minutes=settings.BACKEND_REFRESH_MIN)
    for b in backends:
        if now > b.updated + delta:
            log.debug("Updating resources of backend %r. Last Updated %r",
                      b, b.updated)
            backend_mod.update_backend_resources(b)
コード例 #3
0
ファイル: stats.py プロジェクト: salsa-dev/synnefo
def get_backend_stats(backend=None):
    if backend is None:
        backends = Backend.objects.filter(offline=False)
    else:
        if backend.offline:
            return {}
        backends = [backend]
    [backend_mod.update_backend_resources(b) for b in backends]
    resources = {}
    for attr in ("dfree", "dtotal", "mfree", "mtotal", "ctotal"):
        resources[attr] = 0
        for b in backends:
            resources[attr] += getattr(b, attr)

    return {
        "disk": {
            "free": resources["dfree"],
            "total": resources["dtotal"]
        },
        "ram": {
            "free": resources["mfree"],
            "total": resources["mtotal"]
        },
        "cpu": {
            "free": resources["ctotal"],
            "total": resources["ctotal"]
        },
        "disk_template": {
            "free": 0,
            "total": 0
        }
    }
コード例 #4
0
ファイル: stats.py プロジェクト: apyrgio/synnefo
def get_backend_stats(backend=None):
    if backend is None:
        backends = Backend.objects.filter(offline=False)
    else:
        if backend.offline:
            return {}
        backends = [backend]
    [backend_mod.update_backend_resources(b) for b in backends]
    resources = {}
    for attr in ("dfree", "dtotal", "mfree", "mtotal", "ctotal"):
        resources[attr] = 0
        for b in backends:
            resources[attr] += getattr(b, attr)

    return {"disk": {"free": resources["dfree"], "total": resources["dtotal"]},
            "ram": {"free": resources["mfree"], "total": resources["mtotal"]},
            "cpu": {"free": resources["ctotal"], "total": resources["ctotal"]},
            "disk_template": {"free": 0, "total": 0}}
コード例 #5
0
ファイル: backend-add.py プロジェクト: grnet/synnefo
    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)
コード例 #6
0
 def handle(self, **options):
     for backend in Backend.objects.select_for_update()\
                                   .filter(offline=False):
         backend_mod.update_backend_disk_templates(backend)
         backend_mod.update_backend_resources(backend)
         self.stdout.write("Successfully updated backend '%s'\n" % backend)