Пример #1
0
 def get(cls, id):
     db = DatabaseManager()
     try:
         security_group = db.get_by_id(SecurityGroup, id)
     except NotFoundException as e:
         raise e
     return security_group
Пример #2
0
 def get(cls, id):
     db = DatabaseManager()
     try:
         service = db.get_by_id(Service, id)
     except NotFoundException as e:
         raise e
     return service
Пример #3
0
 def delete(cls, id):
     db = DatabaseManager()
     try:
         service_to_remove = db.get_by_id(Service, id)
     except NotFoundException as e:
         raise e
     db.remove(service_to_remove)
     return service_to_remove
Пример #4
0
 def delete(cls, id):
     db = DatabaseManager()
     try:
         security_group_to_remove = db.get_by_id(SecurityGroup, id)
     except NotFoundException as e:
         raise e
     db.remove(security_group_to_remove)
     return security_group_to_remove
Пример #5
0
def checkTopolgoyUniqueness(topology):
    db = DatabaseManager()
    # check names
    LOG.debug("Check uniqueness of name of the toplogy \"%s\"." %
              topology.name)
    for top in db.get_all(Topology):
        if topology.ext_name == top.ext_name and topology.id != top.id:
            raise NotUniqueException("Topology name \"%s\" is already used." %
                                     topology.name)
Пример #6
0
def checkKey(key):
    db = DatabaseManager()
    existing_keys = db.get_all(Key)
    if key.name in [existing_key.name for existing_key in existing_keys]:
        LOG.debug("key \"%s\" is available." % key)
    else:
        raise NotFoundException(
            "key:\"%s\" is not available. Available keys: %s" %
            (key, [existing_key.name for existing_key in existing_keys]))
Пример #7
0
def checkSecurityGroupUniqueness(security_group):
    db = DatabaseManager()
    existing_security_groups = db.get_all(SecurityGroup)
    LOG.debug("Check uniqueness of name of the security group \"%s\"." %
              security_group.name)
    for existing_security_group in existing_security_groups:
        if security_group.name == existing_security_group.name and security_group != existing_security_group:
            raise NotUniqueException(
                "SecurityGroup:\"%s\" is already existing." %
                security_group.name)
    LOG.debug("Check rules of security group \"%s\"." % security_group.name)
Пример #8
0
 def create(cls, service_args):
     try:
         conf = sys_util().get_sys_conf()
         service_manager = FactoryAgent().get_agent(conf['service_manager'])
         service = service_manager.create(service_args)
         checker = FactoryAgent().get_agent(conf['checker'])
         checker.check(service=service)
         db = DatabaseManager()
         db.persist(service)
     except Exception, msg:
         raise
Пример #9
0
def checkServiceType(service_type):
    db = DatabaseManager()
    services = db.get_all(Service)
    found = False
    for service in services:
        if service.service_type == service_type:
            found = True
            LOG.debug("service_type \"%s\" is available." % service_type)
    if not found:
        raise NotFoundException(
            "service_type:\"%s\" is not available. Available service_types:%s"
            % (service_type, [service.service_type for service in services]))
Пример #10
0
def checkImage(image):
    db = DatabaseManager()
    existing_images = db.get_all(Image)
    if image.name in [
            existing_image.name for existing_image in existing_images
    ]:
        LOG.debug("image \"%s\" is available." % image)
    else:
        raise NotFoundException(
            "image:\"%s\" is not available. Available images: %s" %
            (image,
             [existing_image.name for existing_image in existing_images]))
Пример #11
0
def checkFlavor(flavor):
    db = DatabaseManager()
    existing_flavors = db.get_all(Flavor)
    if flavor.name in [
            existing_flavor.name for existing_flavor in existing_flavors
    ]:
        LOG.debug("flavor \"%s\" is available." % flavor)
    else:
        raise NotFoundException(
            "flavor:\"%s\" is not available. Available flavors: %s" %
            (flavor,
             [existing_flavor.name for existing_flavor in existing_flavors]))
Пример #12
0
def checkServiceUniqueness(service):
    db = DatabaseManager()
    # check uniqueness of service
    LOG.debug("Check uniqueness of name of the service %s." %
              service.service_type)
    if service.service_type:
        for existing_service in db.get_all(Service):
            if service.service_type == existing_service.service_type and service != existing_service:
                raise NotUniqueException(
                    "Service:\"%s\" is already existing." %
                    service.service_type)
    else:
        raise NotDefinedException("service_type is not defined.")
Пример #13
0
 def __init__(self, topology):
     super(CheckerThread, self).__init__()
     self.heatclient = HeatClient()
     self.topology = topology
     self.db = DatabaseManager()
     self.is_stopped = False
     self.is_dns_configured = False
     self.novac = NovaClient()
     #self.dns_configurator = ImsDnsClient()
     self.neutronc = NeutronClient(
         utilSys.get_endpoint(
             'network',
             region_name=SysUtil().get_sys_conf()['os_region_name']),
         utilSys.get_token())
Пример #14
0
    def test_create_service(self):
        db = DatabaseManager()
        if len(db.get_all(Service)) > 0:
            self.fail('The Database must be empty: ' + str())

        connection = httplib.HTTPConnection('%s:8090' % HOST)
        headers = {'Content-type': 'application/json'}

        sent_service = {"service_type": "controller", 'image': "nubomedia-broker", 'flavor': "m1.medium",
                        'size': {'def': 1, 'max': 1, 'min': 1}, 'config': {'hostname': 'ControlServer'}}

        sent_service_json = json.dumps(sent_service)

        connection.request('POST', '/services', sent_service_json, headers)
        resp = connection.getresponse()

        self.assertEqual(resp.status, 200)

        service = db.get_by_service_type(Service, sent_service["service_type"])[0]

        self.assertIsNotNone(service)

        self.assertEqual(service.service_type, sent_service["service_type"])
        self.assertEqual(service.image, sent_service["image"])
        self.assertEqual(service.flavor, sent_service["flavor"])
        self.assertEqual(service.size, sent_service['size'])
        self.assertEqual(service.config, sent_service['config'])

        sent_service['flavor'] = "m1.small"

        sent_service_json = json.dumps(sent_service)

        connection.request('PUT', '/services/' + str(service.id), sent_service_json, headers)
        resp = connection.getresponse()

        self.assertEqual(resp.status, 200)

        service = db.get_by_service_type(Service, sent_service["service_type"])[0]
        self.assertIsNotNone(service)
        self.assertEqual(service.service_type, sent_service["service_type"])
        self.assertEqual(service.image, sent_service["image"])
        self.assertEqual(service.flavor, sent_service["flavor"])
        self.assertEqual(service.size, sent_service['size'])
        self.assertEqual(service.config, sent_service['config'])

        connection.request('DELETE', '/services/' + str(service.id), sent_service_json, headers)

        time.sleep(2)

        self.assertEqual(len(db.get_by_service_type(Service, sent_service["service_type"])), 0)
Пример #15
0
 def create(cls, secgroup_args):
     _sec_rules = secgroup_args.get("rules")
     _new_sec_rules = []
     for _sec_rule_args in _sec_rules:
         _new_sec_rule = Rule(**_sec_rule_args)
         _new_sec_rules.append(_new_sec_rule)
     new_secgroup = SecurityGroup(name=secgroup_args.get('name'),
                                  rules=_new_sec_rules)
     conf = sys_util().get_sys_conf()
     checker = FactoryAgent().get_agent(conf['checker'])
     checker.check(security_group=new_secgroup)
     db = DatabaseManager()
     db.persist(new_secgroup)
     return new_secgroup
Пример #16
0
 def update(cls, service_args, id):
     db = DatabaseManager()
     try:
         updated_service = db.get_by_id(Service, id)
     except NotFoundException as e:
         raise e
     updated_service.config = service_args.get('config') or updated_service.config
     updated_service.flavor = service_args.get('flavor') or updated_service.flavor
     updated_service.image = service_args.get('image') or updated_service.image
     updated_service.service_type = service_args.get('service_type') or updated_service.service_type
     updated_service.size = service_args.get('size') or updated_service.size
     conf = sys_util().get_sys_conf()
     checker = FactoryAgent().get_agent(conf['checker'])
     checker.check(service=updated_service)
     db.update(updated_service)
     return updated_service
Пример #17
0
 def update(cls, secgroup_args, id):
     db = DatabaseManager()
     try:
         updated_secgroup = db.get_by_id(SecurityGroup, id)
     except NotFoundException as e:
         raise e
     _sec_rules = secgroup_args.get('rules')
     _new_sec_rules = []
     for _sec_rule_args in _sec_rules:
         _new_sec_rule = Rule(**_sec_rule_args)
         _new_sec_rules.append(_new_sec_rule)
     updated_secgroup.rules = _new_sec_rules or updated_secgroup.rules
     updated_secgroup.name = secgroup_args.get(
         'name') or updated_secgroup.name
     check(security_group=updated_secgroup)
     db.update(updated_secgroup)
     return updated_secgroup
Пример #18
0
def checkNetwork(network):
    try:
        db = DatabaseManager()
        existing_networks = db.get_all(Network)
        found_private_net = False
        found_subnet = False
        found_public_net = False
        for existing_network in existing_networks:
            if network.private_net == existing_network.ext_id and not found_private_net:
                if existing_network.public == False:
                    LOG.debug("private_network \"%s\" is available." %
                              network.private_net)
                    found_private_net = True
                else:
                    raise InvalidInputException(
                        "private_network:\"%s\" is available but it is marked as public and not as private as defined."
                        % network.private_net)
                for subnet in existing_network.subnets:
                    if network.private_subnet == subnet.ext_id and not found_subnet:
                        found_subnet = True
                if found_subnet:
                    LOG.debug("private_subnet \"%s\" is available." %
                              network.private_subnet)
                else:
                    raise InvalidInputException(
                        "private_subnet:\"%s\" is not available." %
                        network.private_subnet)
            if network.public_net == existing_network.ext_id and not found_public_net:
                if existing_network.public == True:
                    LOG.debug("public_network \"%s\" is available." %
                              network.public_net)
                    found_public_net = True
                else:
                    raise InvalidInputException(
                        "network:\"%s\" is available but it is marked as private and not as public as defined."
                        % network.public_net)
        if not network.private_net and not network.private_subnet and not network.public_net:
            LOG.debug("Networks were not defined.")
        elif network.private_net and network.private_subnet and network.public_net:
            if found_private_net and found_subnet and found_public_net:
                LOG.debug(
                    "All defined networks are available for network: %s" %
                    network)
            if not found_private_net:
                raise NotFoundException("Not found private network: %s" %
                                        network)
            if not found_subnet:
                raise NotFoundException(
                    "Not found private subnet network: %s" % network)
            if not found_public_net:
                raise NotFoundException("Not found public network: %s" %
                                        network)
        elif network.private_net and network.private_subnet and not network.public_net:
            if found_private_net and found_subnet and not found_public_net:
                LOG.debug(
                    "All defined networks are available for network: %s" %
                    network)
            if not found_private_net:
                raise NotFoundException("Not found private network: %s" %
                                        network)
            if not found_subnet:
                raise NotFoundException(
                    "Not found private subnet network: %s" % network)
        elif not network.private_net and network.public_net:
            raise InvalidInputException(
                "Private net is not defined but the public.")
        else:
            raise InvalidInputException("Error while checking networks.")
    except Exception, exc:
        exc.message = 'Network:\"%s\"->%s' % (network.name, exc.message)
        raise exc
Пример #19
0
 def __init__(self):
     self.db = DatabaseManager()
Пример #20
0
    def get_template(topology):
        #name = topology.name
        _template = {}
        _template['heat_template_version'] = '2013-05-23'
        _resources = {}
        _outputs = {}
        LOG.debug("create Template for Topology: %s" % topology.name)

        db = DatabaseManager()

        for service_instance in topology.service_instances:
            _software_config = None
            #Create SoftwareConfig for user_data
            if service_instance.user_data:
                _inputs = []
                if service_instance.requirements:
                    for requirement in service_instance.requirements:
                        _inputs.append(requirement.name)
                _software_config = SoftwareConfig(
                    name='%s-SoftwareConfig' % service_instance.name,
                    config=service_instance.user_data,
                    group=service_instance.name,
                    inputs=_inputs)

            for unit in service_instance.units:
                #Create input values for user_data for SoftwareDeployment
                if service_instance.requirements or service_instance.user_data:
                    _input_values = {}
                    for requirement in service_instance.requirements:
                        try:
                            source_service_instances = db.get_by_name(
                                ServiceInstance, requirement.source)
                        except:
                            LOG.debug(
                                'ERROR: Entry %s was not found in Table ServiceInstance'
                                % requirement.source)
                            raise
                        source_units = []
                        if source_service_instances:
                            source_service_instance = source_service_instances[
                                0]
                            source_units = source_service_instance.units
                            LOG.debug(source_units)
                            if source_units:
                                if requirement.parameter == 'private_ip' or requirement.parameter == 'public_ip':
                                    #Get requested network specified in the requirement
                                    _networks = [
                                        network for network in
                                        source_service_instance.networks
                                        if network.name == requirement.obj_name
                                    ]
                                    _network = None
                                    if _networks:
                                        _network_id = _networks[0].private_net
                                    else:
                                        LOG.debug(
                                            'ERROR: obj_name %s was not found in networks of ServiceInstance %s'
                                            % (requirement.obj_name,
                                               source_service_instance))
                                        raise
                                    #Get network name of the specified network id
                                    _network_names = [
                                        network.name
                                        for network in db.get_all(Network)
                                        if network.ext_id == _network_id
                                    ]
                                    _network_name = None
                                    if _network_names:
                                        _network_name = _network_names[0]
                                    else:
                                        LOG.debug(
                                            'ERROR: Cannot find network with id %s in Table Network'
                                            % _network_id)
                                    if requirement.parameter == "private_ip":
                                        ip_number = 0
                                    elif requirement.parameter == "public_ip":
                                        ip_number = 1
                                    #Create the variable
                                    _param_params = {}
                                    _first_unit = source_units[0]
                                    _param_template = '$%s' % _first_unit.hostname
                                    _param_params['$%s' %
                                                  _first_unit.hostname] = {
                                                      'get_attr': [
                                                          _first_unit.hostname,
                                                          'networks',
                                                          _network_name,
                                                          ip_number
                                                      ]
                                                  }
                                    for source_unit in source_units[1:]:
                                        _param_template += ';$%s' % source_unit.hostname
                                        _param_params[
                                            '$%s' % source_unit.hostname] = {
                                                'get_attr': [
                                                    source_unit.hostname,
                                                    'networks', _network_name,
                                                    ip_number
                                                ]
                                            }
                                param = {}
                                param[requirement.name] = {}
                                param[requirement.name]['str_replace'] = {}
                                param[requirement.name]['str_replace'][
                                    'template'] = _param_template
                                param[requirement.name]['str_replace'][
                                    'params'] = _param_params
                                _input_values.update(param)
                            else:
                                LOG.debug(
                                    'ERROR: Units for ServiceInstance %s were not found.'
                                    % requirement.source)
                                raise Exception
                        else:
                            LOG.debug(
                                'ERROR: ServiceInstance %s was not found' %
                                requirement.source)
                            raise Exception
                    _software_deployment = SoftwareDeployment(
                        name='%s-SoftwareDeployment' % unit.hostname,
                        config=_software_config,
                        server=unit,
                        input_values=_input_values)
                    _resources.update(_software_deployment.dump_to_dict())

                #Create Ports and floating IPs for this unit
                _ports = []
                _floating_ips = []
                if service_instance.networks:
                    i = 1
                    for network in service_instance.networks:
                        ###Creating Port for this service instance
                        _new_port = None
                        #prepare port args for this service instance
                        _port_args = {}
                        _port_args['name'] = '%s-port-%s' % (unit.hostname, i)
                        _port_args['private_net_id'] = network.private_net
                        _port_args[
                            'private_subnet_id'] = network.private_subnet
                        _port_args['fixed_ip'] = network.fixed_ip
                        if network.security_groups:
                            _port_args[
                                'security_groups'] = network.security_groups
                        _new_port = Port(**_port_args)
                        _ports.append(_new_port)
                        if network.public_net:
                            _new_floating_ip_args = {}
                            _new_floating_ip_args[
                                'name'] = '%s-floating_ip-%s' % (unit.hostname,
                                                                 i)
                            _new_floating_ip_args[
                                'floating_network_id'] = network.public_net
                            _new_floating_ip_args['port'] = _new_port.name
                            _new_floating_ip = FloatingIP(
                                **_new_floating_ip_args)
                            _floating_ips.append(_new_floating_ip)
                        ###Adding Security Groups
                        for _security_group in network.security_groups:
                            _new_name = _security_group.name
                            _new_rules = []
                            _rules = _security_group.rules
                            for _rule in _rules:
                                _name = _rule.name
                                _remote_ip_prefix = _rule.remote_ip_prefix
                                _protocol = _rule.protocol
                                _port_range_max = int(
                                    _rule.port_range_max
                                ) if _rule.port_range_max else None
                                _port_range_min = int(
                                    _rule.port_range_min
                                ) if _rule.port_range_min else None
                                _new_rule = Rule(_name, _remote_ip_prefix,
                                                 _protocol, _port_range_max,
                                                 _port_range_min)
                                _new_rules.append(_new_rule)
                            _new_security_group = SecurityGroup(
                                name=_new_name, rules=_new_rules)
                            _resources.update(
                                _new_security_group.dump_to_dict())
                        i += 1

                ###Create Server for this service instance
                _new_server = None
                #prepare server args
                _server_args = {}
                _server_args['name'] = "%s" % unit.hostname
                _server_args['hostname'] = "%s" % unit.hostname
                _server_args['flavor'] = service_instance.flavor.name
                _server_args['image'] = service_instance.image.name
                _server_args['key_name'] = service_instance.key.name
                _server_args['network_ports'] = _ports
                _server_args['user_data'] = service_instance.user_data
                _server_args['requirements'] = service_instance.requirements
                _new_server = Server(**_server_args)

                _resources.update(_new_server.dump_to_dict())

                if _software_config:
                    _resources.update(_software_config.dump_to_dict())
                if _ports:
                    for _port in _ports:
                        _resources.update(_port.dump_to_dict())
                if _floating_ips:
                    for _floating_ip in _floating_ips:
                        _resources.update(_floating_ip.dump_to_dict())
        print _resources
        _template['resources'] = _resources

        ###Output section###
        db = DatabaseManager()
        for service_instance in topology.service_instances:
            for network_instance in service_instance.networks:
                if network_instance.public_net:
                    _public_network_names = [
                        _network.name for _network in db.get_all(Network)
                        if _network.ext_id == network_instance.public_net
                    ]
                    _public_network_name = None
                    if _public_network_names:
                        _public_network_name = _public_network_names[0]
                    else:
                        LOG.debug(
                            'ERROR: Cannot find network with id %s in Table Network'
                            % network_instance.public_net)
                if network_instance.private_net:
                    _private_network_names = [
                        _network.name for _network in db.get_all(Network)
                        if _network.ext_id == network_instance.private_net
                    ]
                    _private_network_name = None
                    if _private_network_names:
                        _private_network_name = _private_network_names[0]
                    else:
                        LOG.debug(
                            'ERROR: Cannot find network with id %s in Table Network'
                            % network_instance.net)
                for unit in service_instance.units:
                    if network_instance.public_net and _public_network_name:
                        output = {}
                        output['value'] = {
                            'get_attr': [
                                unit.hostname, 'networks',
                                _private_network_name, 1
                            ]
                        }
                        output[
                            'description'] = 'Public IP of %s.' % unit.hostname
                        _outputs['mcn.endpoint.%s' % unit.hostname] = output
                    elif network_instance.private_net and _private_network_name:
                        output = {}
                        output['value'] = {
                            'get_attr': [
                                unit.hostname, 'networks',
                                _private_network_name, 0
                            ]
                        }
                        output[
                            'description'] = 'Private IP of %s.' % unit.hostname
                        _outputs['mcn.endpoint.%s' % unit.hostname] = output
        _template['outputs'] = _outputs

        yaml.add_representer(
            unicode, lambda dumper, value: dumper.represent_scalar(
                u'tag:yaml.org,2002:str', value))
        yaml.add_representer(SysUtil.literal_unicode,
                             SysUtil.literal_unicode_representer)
        LOG.debug((_template))
        #LOG.debug(yaml.dumps(template))
        #f = open('/net/u/mpa/tempalte_file.yaml', 'w')
        #f.write(yaml.dump(template, indent=2))
        return yaml.dump(_template)
Пример #21
0
 def get_all_networks(cls):
     db = DatabaseManager()
     networks = db.get_all(Network)
     return networks
Пример #22
0
 def get_all_subnets(cls):
     db = DatabaseManager()
     networks = db.get_all(Subnet)
     return networks
Пример #23
0
    def get_template(topology):
        #name = topology.name
        template = {}
        template['heat_template_version'] = '2013-05-23'
        resources = {}
        outputs = {}
        #print "create Template for Topology: %s" % name

        for service_instance in topology.service_instances:
            for unit in service_instance.units:
                #Create Ports and floating IPs for this unit
                ports = []
                floating_ips = []
                if service_instance.networks:
                    i = 1
                    for network in service_instance.networks:
                        ###Creating Port for this service instance
                        new_port = None
                        #prepare port args for this service instance
                        port_args = {}
                        port_args['name'] = '%s-port-%s' % (unit.hostname, i)
                        port_args['private_net_id'] = network.private_net
                        port_args['private_subnet_id'] = network.private_subnet
                        # if "hss-1" in unit.hostname:
                        #     port_args['fixed_ip'] = "192.168.9.48"
                        # elif "hss-2" in unit.hostname:
                        #     port_args['fixed_ip'] = "192.168.9.55"
                        # else:
                        port_args['fixed_ip'] = network.fixed_ip

                        if network.security_groups:
                            port_args[
                                'security_groups'] = network.security_groups
                        new_port = Port(**port_args)
                        ports.append(new_port)
                        if network.public_net:
                            new_floating_ip_args = {}
                            new_floating_ip_args[
                                'name'] = '%s-floating_ip-%s' % (unit.hostname,
                                                                 i)
                            new_floating_ip_args[
                                'floating_network_id'] = network.public_net
                            new_floating_ip_args['port'] = new_port.name
                            new_floating_ip = FloatingIP(
                                **new_floating_ip_args)
                            floating_ips.append(new_floating_ip)
                        ###Adding Security Groups
                        for _security_group in network.security_groups:
                            _new_name = _security_group.name
                            _new_rules = []
                            _rules = _security_group.rules
                            for _rule in _rules:
                                _name = _rule.name
                                _remote_ip_prefix = _rule.remote_ip_prefix
                                _protocol = _rule.protocol
                                _port_range_max = int(
                                    _rule.port_range_max
                                ) if _rule.port_range_max else None
                                _port_range_min = int(
                                    _rule.port_range_min
                                ) if _rule.port_range_min else None
                                _new_rule = Rule(_name, _remote_ip_prefix,
                                                 _protocol, _port_range_max,
                                                 _port_range_min)
                                _new_rules.append(_new_rule)
                            _new_security_group = SecurityGroup(
                                name=_new_name, rules=_new_rules)
                            resources.update(
                                _new_security_group.dump_to_dict())
                        i += 1

                ###Create Server for this service instance
                new_server = None
                #prepare server args
                server_args = {}
                server_args['name'] = "%s" % unit.hostname
                server_args['hostname'] = "%s" % unit.hostname
                server_args['availability_zone'] = unit.availability_zone
                server_args['flavor'] = service_instance.flavor.name
                # if "hss-1" in unit.hostname:
                #     server_args['image'] = "hss-1"
                # elif "hss-2" in unit.hostname:
                #     server_args['image'] = "hss-2"
                # else:
                server_args['image'] = service_instance.image.name
                server_args['key_name'] = service_instance.key.name
                server_args['network_ports'] = ports
                server_args['user_data'] = service_instance.user_data
                server_args['requirements'] = service_instance.requirements
                new_server = Server(**server_args)

                resources.update(new_server.dump_to_dict())

                if ports:
                    for port in ports:
                        resources.update(port.dump_to_dict())
                if floating_ips:
                    for floating_ip in floating_ips:
                        resources.update(floating_ip.dump_to_dict())

        template['resources'] = resources

        ###Output section###
        db = DatabaseManager()
        for service_instance in topology.service_instances:
            for network_instance in service_instance.networks:
                if network_instance.public_net:
                    _public_network_names = [
                        _network.name for _network in db.get_all(Network)
                        if _network.ext_id == network_instance.public_net
                    ]
                    _public_network_name = None
                    if _public_network_names:
                        _public_network_name = _public_network_names[0]
                    else:
                        LOG.debug(
                            'ERROR: Cannot find network with id %s in Table Network'
                            % network_instance.public_net)
                if network_instance.private_net:
                    _private_network_names = [
                        _network.name for _network in db.get_all(Network)
                        if _network.ext_id == network_instance.private_net
                    ]
                    _private_network_name = None
                    if _private_network_names:
                        _private_network_name = _private_network_names[0]
                    else:
                        LOG.debug(
                            'ERROR: Cannot find network with id %s in Table Network'
                            % network_instance.net)

                for unit in service_instance.units:
                    if network_instance.public_net and _public_network_name:
                        output = {}
                        floating_name = '%s-floating_ip-1' % unit.hostname
                        output['value'] = {
                            'get_attr': [floating_name, 'floating_ip_address']
                        }
                        output[
                            'description'] = 'Public IP of %s.' % unit.hostname
                        outputs['mcn.endpoint.%s' % unit.hostname] = output
                    elif network_instance.private_net and _private_network_name:
                        output = {}
                        port_name = '%s-port-1' % unit.hostname
                        output['value'] = {
                            'get_attr':
                            [port_name, 'fixed_ips', 0, 'ip_address']
                        }
                        output[
                            'description'] = 'Private IP of %s.' % unit.hostname
                        outputs['mcn.endpoint.%s' % unit.hostname] = output

                    if network_instance.public_net and _public_network_name:
                        network_type = "public"
                        output = {}
                        floating_name = '%s-floating_ip-1' % unit.hostname
                        output['value'] = {
                            'get_attr': [floating_name, 'floating_ip_address']
                        }
                        output['description'] = '%s ip of %s in %s.' % (
                            network_type.capitalize(), unit.hostname,
                            network_instance.name)

                        outputs['mcn.endpoint.%s.%s.%s' %
                                (unit.hostname, network_instance.name,
                                 network_type)] = output

                    if network_instance.private_net and _private_network_name:
                        network_type = "private"
                        output = {}
                        port_name = '%s-port-1' % unit.hostname
                        output['value'] = {
                            'get_attr':
                            [port_name, 'fixed_ips', 0, 'ip_address']
                        }
                        output['description'] = '%s ip of %s in %s.' % (
                            network_type.capitalize(), unit.hostname,
                            network_instance.name)

                        outputs['mcn.endpoint.%s.%s.%s' %
                                (unit.hostname, network_instance.name,
                                 network_type)] = output

        template['outputs'] = outputs

        yaml.add_representer(
            unicode, lambda dumper, value: dumper.represent_scalar(
                u'tag:yaml.org,2002:str', value))
        yaml.add_representer(SysUtil.literal_unicode,
                             SysUtil.literal_unicode_representer)
        LOG.debug((template))
        #LOG.debug(yaml.dumps(template))
        #f = open('/net/u/mpa/tempalte_file.yaml', 'w')
        #f.write(yaml.dump(template, indent=2))
        return yaml.dump(template)
Пример #24
0
 def delete_rule(cls, id):
     db = DatabaseManager()
     try:
         db.remove(db.get_by_id(Rule, id))
     except NotFoundException as e:
         raise e
Пример #25
0
 def get_all(cls):
     db = DatabaseManager()
     return db.get_all(SecurityGroup)
Пример #26
0
 def dump_to_dict(self):
     db = DatabaseManager()
     resource = {}
     server_config = {}
     server_config['type'] = self.type
     properties = {}
     properties['name'] = self.name
     properties['image'] = self.image
     properties['flavor'] = self.flavor
     if self.key_name is not None: properties['key_name'] = self.key_name
     if self.availability_zone is not None:
         properties['availability_zone'] = self.availability_zone
     if self.network_ports is not None:
         networks = []
         LOG.debug(self.network_ports)
         for network_port in self.network_ports:
             networks.append({'port': {'get_resource': network_port.name}})
         properties['networks'] = networks
     if self.user_data:
         properties['user_data_format'] = 'RAW'
         properties['user_data'] = {}
         properties['user_data']['str_replace'] = {}
         properties['user_data']['str_replace']['template'] = ''
         _user_data = ''
         _user_data_list = []
         for command in self.user_data:
             _user_data += "%s\n" % command.command
         properties['user_data']['str_replace'][
             'template'] = SysUtil.literal_unicode((_user_data))
         properties['user_data']['str_replace']['params'] = {'': ''}
         if self.requirements:
             params = {}
             for requirement in self.requirements:
                 try:
                     source_service_instances = db.get_by_name(
                         ServiceInstance, requirement.source)
                 except:
                     LOG.debug(
                         'ERROR: Entry %s was not found in Table ServiceInstance'
                         % requirement.source)
                     raise
                 source_units = []
                 if source_service_instances:
                     source_service_instance = source_service_instances[0]
                     source_units = source_service_instance.units
                     LOG.debug(source_units)
                     if source_units:
                         if requirement.parameter == 'private_ip' or requirement.parameter == 'public_ip':
                             #Get requested network specified in the requirement
                             _networks = [
                                 network for network in
                                 source_service_instance.networks
                                 if network.name == requirement.obj_name
                             ]
                             _network = None
                             if _networks:
                                 _network_id = _networks[0].private_net
                             else:
                                 LOG.debug(
                                     'ERROR: obj_name %s was not found in networks of ServiceInstance %s'
                                     % (requirement.obj_name,
                                        source_service_instance))
                                 raise
                             #Get network name of the specified network id
                             _network_names = [
                                 network.name
                                 for network in db.get_all(Network)
                                 if network.ext_id == _network_id
                             ]
                             _network_name = None
                             if _network_names:
                                 _network_name = _network_names[0]
                             else:
                                 LOG.debug(
                                     'ERROR: Cannot find network with id %s in Table Network'
                                     % _network_id)
                             if requirement.parameter == "private_ip":
                                 ip_number = 0
                             elif requirement.parameter == "public_ip":
                                 ip_number = 1
                             #Create the variable
                             _params = {}
                             _first_unit = source_units[0]
                             _template = '$%s' % _first_unit.hostname
                             _params['$%s' % _first_unit.hostname] = {
                                 'get_attr': [
                                     _first_unit.hostname, 'networks',
                                     _network_name, ip_number
                                 ]
                             }
                             for source_unit in source_units[1:]:
                                 _template += ';$%s' % source_unit.hostname
                                 _params['$%s' % source_unit.hostname] = {
                                     'get_attr': [
                                         source_unit.hostname, 'networks',
                                         _network_name, ip_number
                                     ]
                                 }
                         param = {}
                         param[requirement.name] = {}
                         param[requirement.name]['str_replace'] = {}
                         param[requirement.
                               name]['str_replace']['template'] = _template
                         param[requirement.
                               name]['str_replace']['params'] = _params
                         params.update(param)
                     else:
                         LOG.debug(
                             'ERROR: Units for ServiceInstance %s were not found.'
                             % requirement.source)
                         raise Exception
                 else:
                     LOG.debug('ERROR: ServiceInstance %s was not found' %
                               requirement.source)
                     raise Exception
             properties['user_data']['str_replace']['params'] = params
     server_config['properties'] = properties
     resource[self.name] = server_config
     return resource
Пример #27
0
 def get_all_keys(cls):
     db = DatabaseManager()
     keys = db.get_all(Key)
     return keys
Пример #28
0
    resp = (response.read())

    logger.debug(resp)

    logger.debug(
        '\n###################CREATE SECURITY GROUPS###################')
    connection.request('GET', '/secgroups')
    response = connection.getresponse()
    resp = (response.read())

    logger.debug(resp)

    logger.debug(
        '\n###################CREATE SERVICE###########################')

    db = DatabaseManager()

    lst = [db.get_all(SecurityGroup)]
    _json = create_service(lst)

    connection.request('POST', '/services', _json, headers)
    response = connection.getresponse()
    resp = (response.read())

    logger.debug(resp)

    logger.debug(
        '\n####################GET SERVICES############################')
    connection.request('GET', '/services')

    response = connection.getresponse()
Пример #29
0
 def get_all(cls):
     return DatabaseManager().get_all(Service)
Пример #30
0
 def get_all_flavors(cls):
     db = DatabaseManager()
     flavors = db.get_all(Flavor)
     return flavors