Exemple #1
0
    def configure(memory, cpu, disk, down_threshold, label):
        """Create, get or modify partition configuration"""
        cell = context.GLOBAL.cell
        admin_part = admin.Partition(context.GLOBAL.ldap.conn)

        attrs = {}
        if memory:
            attrs['memory'] = memory
        if cpu:
            attrs['cpu'] = cpu
        if disk:
            attrs['disk'] = disk
        if down_threshold:
            attrs['down-threshold'] = down_threshold

        if attrs:
            try:
                admin_part.create([label, cell], attrs)
            except ldap3.LDAPEntryAlreadyExistsResult:
                admin_part.update([label, cell], attrs)

        try:
            cli.out(formatter(admin_part.get([label, cell])))
        except ldap3.LDAPNoSuchObjectResult:
            click.echo('Partition does not exist: %s' % label, err=True)
Exemple #2
0
    def delete(label):
        """Delete a partition"""
        cell = context.GLOBAL.cell
        admin_part = admin.Partition(context.GLOBAL.ldap.conn)

        try:
            admin_part.delete([label, cell])
        except ldap_exceptions.LDAPNoSuchObjectResult:
            click.echo('Partition does not exist: %s' % label, err=True)
    def configure_partition_cmd(autoscale_max, autoscale_max_broken,
                                autoscale_max_on_demand, autoscale_min,
                                app_ratio, idle_server_ttl, image,
                                image_accounts, disk_size, instance_types,
                                spot_instance_types, spot_duration, hostgroups,
                                secgroup, instance_profile, subnets,
                                s3_registry_bucket, partition):
        """Configure partition data."""
        cell = context.GLOBAL.cell
        admin_part = admin.Partition(context.GLOBAL.ldap.conn)

        try:
            part_data = admin_part.get([partition, cell], dirty=True)
            data = part_data.get('data', {})
        except admin_exceptions.NoSuchObjectResult:
            data = {}

        autoscale = data.get('autoscale', {})
        _set(autoscale, 'max_servers', autoscale_max, unset_value=-1)
        _set(autoscale,
             'max_broken_servers',
             autoscale_max_broken,
             unset_value=-1)
        _set(autoscale,
             'max_on_demand_servers',
             autoscale_max_on_demand,
             unset_value=-1)
        _set(autoscale, 'min_servers', autoscale_min, unset_value=-1)
        _set(autoscale, 'server_app_ratio', app_ratio, unset_value=0.0)
        _set(autoscale, 'idle_server_ttl', idle_server_ttl, unset_value=-1)

        modified = _set(data, 'autoscale', autoscale)
        modified = _set(data, 'image', image) or modified
        modified = _set(data, 'image_accounts', image_accounts) or modified
        modified = _set(data, 'disk_size', disk_size) or modified
        modified = _set(data, 'instance_types', instance_types) or modified
        modified = _set(data, 'spot_instance_types',
                        spot_instance_types) or modified
        if spot_duration is not None:
            spot_duration = int(spot_duration)
        modified = _set(data, 'spot_duration', spot_duration,
                        unset_value=0) or modified
        modified = _set(data, 'hostgroups', hostgroups) or modified
        modified = _set(data, 'secgroup', secgroup) or modified
        modified = _set(data, 'instance_profile', instance_profile) or modified
        modified = _set(data, 'subnets', subnets) or modified
        modified = _set(data, 's3_registry_bucket',
                        s3_registry_bucket) or modified

        if modified:
            admin_part.update([partition, cell], {'data': data})
        cli.out(formatter(data))
Exemple #4
0
    def configure(memory, cpu, disk, systems, down_threshold, reboot_schedule,
                  data, partition):
        """Create, get or modify partition configuration"""
        # Disable too many branches.
        #
        # pylint: disable=R0912
        cell = context.GLOBAL.cell
        admin_part = admin.Partition(context.GLOBAL.ldap.conn)

        attrs = {}
        if memory:
            attrs['memory'] = memory
        if cpu:
            attrs['cpu'] = cpu
        if disk:
            attrs['disk'] = disk
        if systems:
            if systems == ['-']:
                attrs['systems'] = None
            else:
                attrs['systems'] = list(six.moves.map(int, systems))
        if down_threshold:
            if down_threshold.endswith('%'):
                attrs['down-threshold'] = _resolve_partition_threshold(
                    cell, partition, int(down_threshold[:-1]))
            else:
                attrs['down-threshold'] = int(down_threshold)
        if reboot_schedule:
            attrs['reboot-schedule'] = reboot_schedule
        if data:
            with io.open(data, 'rb') as fd:
                attrs['data'] = yaml.load(stream=fd)

        if attrs:
            try:
                admin_part.create([partition, cell], attrs)
            except ldap_exceptions.LDAPEntryAlreadyExistsResult:
                admin_part.update([partition, cell], attrs)

        try:
            cli.out(
                formatter(admin_part.get([partition, cell],
                                         dirty=bool(attrs))))
        except ldap_exceptions.LDAPNoSuchObjectResult:
            click.echo('Partition does not exist: %s' % partition, err=True)
Exemple #5
0
 def setUp(self):
     self.part = admin.Partition(
         admin.Admin(None, 'dc=xx,dc=com'))
Exemple #6
0
def _admin_partition():
    """Lazily return admin partition object.
    """
    return admin.Partition(context.GLOBAL.ldap.conn)