コード例 #1
0
 def get(cls, id):
     conf = sys_util().get_sys_conf()
     db = FactoryAgent().get_agent(conf['database_manager'])
     try:
         topology = db.get_by_id(Topology, id)
     except NotFoundException as e:
         raise e
     return topology
コード例 #2
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
コード例 #3
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
コード例 #4
0
 def create(cls, topology_args):
     conf = sys_util().get_sys_conf()
     db = FactoryAgent().get_agent(conf['database_manager'])
     topology_manager = FactoryAgent().get_agent(conf['topology_manager'])
     try:
         topology = topology_manager.create(topology_args)
         checker = FactoryAgent().get_agent(conf['checker'])
         checker.check(topology=topology)
         db.persist(topology)
     except Exception, exc:
         LOG.exception(exc.message)
         raise
コード例 #5
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
コード例 #6
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
コード例 #7
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
コード例 #8
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
コード例 #9
0
    def __init__(self, token, tenant_name):
        """
        Constructor
        """
        super(SoExecution, self).__init__(token, tenant_name)
        # by default
        self.topology_type = "topology-maas-bern.json"
        self.token = token
        self.tenant_name = tenant_name
        self.stack_id = None
        self.maas = None
        self.location = 'bern'
        # make sure we can talk to deployer...
        LOG.debug("sending request to the url %s" % os.environ['DESIGN_URI'])

        self.conf = sys_util().get_sys_conf()
        LOG.debug("instantiating deployer %s" % self.conf['deployer'])
        self.deployer = None
コード例 #10
0
    def __init__(self, token, tenant_name):
        """
        Constructor
        """
        super(SoExecution, self).__init__(token, tenant_name)
        # by default
        self.topology_type = "topology-maas-bern.json"
        self.token = token
        self.tenant_name = tenant_name
        self.stack_id = None
        self.maas = None
        self.location = 'bern'
        # make sure we can talk to deployer...
        LOG.debug("sending request to the url %s" % os.environ['DESIGN_URI'])

        self.conf = sys_util().get_sys_conf()
        LOG.debug("instantiating deployer %s" %self.conf['deployer'])
        self.deployer = None
コード例 #11
0
    def update(cls, new_topology_args, old_topology):
        conf = sys_util().get_sys_conf()
        db = FactoryAgent().get_agent(conf['database_manager'])
        topology_manager = FactoryAgent().get_agent(conf['topology_manager'])
        checker = FactoryAgent().get_agent(conf['checker'])

        if old_topology.state in ['DEPLOYED','UPDATED']:
            old_topology.state = 'UPDATING'
        else:
            raise ActionInProgressException('Cannot update topology while another action is in progress. Topology state is \"%s\".' % old_topology.state)
        db.update(old_topology)

        try:
            new_topology = topology_manager.create(new_topology_args)
            checker.check(topology=new_topology)
            updated_topology = topology_manager.update(new_topology, old_topology)
            #checker.check(topology=updated_topology)
            db.update(updated_topology)
        except Exception, exc:
            LOG.exception(exc.message)
            raise exc
コード例 #12
0
ファイル: TopologyManager.py プロジェクト: Cloudxtreme/maas
 def update(self, new_topology, old_topology):
     conf = sys_util().get_sys_conf()
     db = FactoryAgent().get_agent(conf['database_manager'])
     updated_topology = old_topology
     updated_topology.name = new_topology.name
     #check for additional service instances and add them to the list of new instances
     appended_service_instances = []
     for new_service_instance in new_topology.service_instances:
         is_found = False
         for updated_service_instance in updated_topology.service_instances:
             if new_service_instance.name == updated_service_instance.name:
                 is_found = True
                 break
         if not is_found:
             appended_service_instances.append(new_service_instance)
     #check for removed service instances and add it to the list of removed instances
     removed_service_instances = []
     for updated_service_instance in updated_topology.service_instances:
         is_found = False
         for new_service_instance in new_topology.service_instances:
             if new_service_instance.name == updated_service_instance.name:
                 is_found = True
                 break
         if not is_found:
             removed_service_instances.append(updated_service_instance)
     #remove removed service instances
     for removed_service_instance in removed_service_instances:
         updated_topology.service_instances.remove(removed_service_instance)
         LOG.debug('Removed ServiceInstance \"%s\" from Topology \"%s\".' %
                   (removed_service_instance.name, updated_topology.name))
     #append additional service instances
     for appended_service_instance in appended_service_instances:
         appended_service_instance.topology_id = updated_topology.id
         updated_topology.service_instances.append(
             appended_service_instance)
         if appended_service_instance.policies is not None:
             for policy in appended_service_instance.policies:
                 db.persist(policy)
         db.persist(appended_service_instance)
         LOG.debug('Appended ServiceInstance \"%s\" to Topology \"%s\".' %
                   (appended_service_instance.name, updated_topology.name))
     #Update all values for each service instance
     for updated_service_instance in updated_topology.service_instances:
         for new_service_instance in new_topology.service_instances:
             if updated_service_instance.name == new_service_instance.name:
                 updated_service_instance.size = new_service_instance.size
                 updated_service_instance.configuration = new_service_instance.configuration
                 updated_service_instance.policies = new_service_instance.policies
                 #updated_service_instance.service_type = new_service_instance.service_type
                 if new_service_instance.service_type and updated_service_instance.service_type != new_service_instance.service_type:
                     LOG.warning(
                         "Cannot update service_type for %s->%s. Not Implemented."
                         % (updated_topology.name,
                            updated_service_instance.name))
                 if new_service_instance.adapter and updated_service_instance.adapter != new_service_instance.adapter:
                     LOG.warning(
                         "Cannot update adapter for %s->%s. Not Implemented."
                         % (updated_topology.name,
                            updated_service_instance.name))
                 #updated_service_instance.flavor = new_service_instance.flavor
                 if new_service_instance.flavor and updated_service_instance.flavor.name != new_service_instance.flavor.name:
                     LOG.warning(
                         "Cannot update flavor for %s->%s. Not Implemented."
                         % (updated_topology.name,
                            updated_service_instance.name))
                 #updated_service_instance.image = new_service_instance.image
                 if new_service_instance.image and updated_service_instance.image.name != new_service_instance.image.name:
                     LOG.warning(
                         "Cannot update image for %s->%s. Not Implemented."
                         % (updated_topology.name,
                            updated_service_instance.name))
                 #updated_service_instance.networks = new_service_instance.networks
                 if new_service_instance.networks is not None:
                     LOG.warning(
                         "Cannot update networks for %s->%s. Not Implemented."
                         % (updated_topology.name,
                            updated_service_instance.name))
                 #updated_service_instance.requirements = new_service_instance.requirements
                 if new_service_instance.requirements is not None:
                     LOG.warning(
                         "Cannot update networks for %s->%s. Not Implemented."
                         % (updated_topology.name,
                            updated_service_instance.name))
                 #updated_service_instance.user_data = new_service_instance.user_data
                 if new_service_instance.user_data is not None:
                     LOG.warning(
                         "Cannot update user_data for %s->%s. Not Implemented."
                         % (updated_topology.name,
                            updated_service_instance.name))
                 if new_service_instance.key and updated_service_instance.key.name != new_service_instance.key.name:
                     LOG.warning(
                         "Cannot update key for %s->%s without replacement."
                         % (updated_topology.name,
                            updated_service_instance.name))
     #Add or remove units according to minimal or maximal size
     for updated_service_instance in updated_topology.service_instances:
         if updated_service_instance not in appended_service_instances:
             if len(updated_service_instance.units
                    ) < updated_service_instance.size.get('min'):
                 for i in range(
                         updated_service_instance.size.get('min') -
                         len(updated_service_instance.units)):
                     _hostname = '%s-%s' % (
                         updated_service_instance.name,
                         str(len(updated_service_instance.units) + 1))
                     _state = 'DEFINED'
                     new_unit = Unit(hostname=_hostname, state=_state)
                     new_unit.service_instance_id = updated_service_instance.id
                     updated_service_instance.units.append(new_unit)
                     db.persist(new_unit)
             if len(updated_service_instance.units
                    ) > updated_service_instance.size.get('max'):
                 for i in range(
                         len(updated_service_instance.units) -
                         updated_service_instance.size.get('max')):
                     removed_unit = updated_service_instance.units.pop(
                         len(updated_service_instance.units) - 1)
                     db.remove(removed_unit)
     return updated_topology
コード例 #13
0
 def update(self, new_topology, old_topology):
     conf = sys_util().get_sys_conf()
     db = FactoryAgent().get_agent(conf['database_manager'])
     updated_topology = old_topology
     updated_topology.name = new_topology.name
     #check for additional service instances and add them to the list of new instances
     appended_service_instances = []
     for new_service_instance in new_topology.service_instances:
         is_found = False
         for updated_service_instance in updated_topology.service_instances:
             if new_service_instance.name == updated_service_instance.name:
                 is_found = True
                 break
         if not is_found:
             appended_service_instances.append(new_service_instance)
     #check for removed service instances and add it to the list of removed instances
     removed_service_instances = []
     for updated_service_instance in updated_topology.service_instances:
         is_found = False
         for new_service_instance in new_topology.service_instances:
             if new_service_instance.name == updated_service_instance.name:
                 is_found = True
                 break
         if not is_found:
             removed_service_instances.append(updated_service_instance)
     #remove removed service instances
     for removed_service_instance in removed_service_instances:
         updated_topology.service_instances.remove(removed_service_instance)
         logger.debug('Removed ServiceInstance \"%s\" from Topology \"%s\".' % (removed_service_instance.name, updated_topology.name))
     #append additional service instances
     for appended_service_instance in appended_service_instances:
         appended_service_instance.topology_id = updated_topology.id
         updated_topology.service_instances.append(appended_service_instance)
         if appended_service_instance.policies is not None:
             for policy in appended_service_instance.policies:
                 db.persist(policy)
         db.persist(appended_service_instance)
         logger.debug('Appended ServiceInstance \"%s\" to Topology \"%s\".' % (appended_service_instance.name, updated_topology.name))
     #Update all values for each service instance
     for updated_service_instance in updated_topology.service_instances:
         for new_service_instance in new_topology.service_instances:
             if updated_service_instance.name == new_service_instance.name:
                 updated_service_instance.size = new_service_instance.size
                 updated_service_instance.configuration = new_service_instance.configuration
                 updated_service_instance.policies = new_service_instance.policies
                 #updated_service_instance.service_type = new_service_instance.service_type
                 if new_service_instance.service_type and updated_service_instance.service_type != new_service_instance.service_type:
                     logger.warning("Cannot update service_type for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name))
                 if new_service_instance.adapter and updated_service_instance.adapter != new_service_instance.adapter:
                     logger.warning("Cannot update adapter for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name))
                 #updated_service_instance.flavor = new_service_instance.flavor
                 if new_service_instance.flavor and updated_service_instance.flavor.name != new_service_instance.flavor.name:
                     logger.warning("Cannot update flavor for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name))
                 #updated_service_instance.image = new_service_instance.image
                 if new_service_instance.image and updated_service_instance.image.name != new_service_instance.image.name:
                     logger.warning("Cannot update image for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name))
                 #updated_service_instance.networks = new_service_instance.networks
                 if new_service_instance.networks is not None:
                     logger.warning("Cannot update networks for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name))
                 #updated_service_instance.requirements = new_service_instance.requirements
                 if new_service_instance.requirements is not None:
                     logger.warning("Cannot update networks for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name))
                 #updated_service_instance.user_data = new_service_instance.user_data
                 if new_service_instance.user_data is not None:
                     logger.warning("Cannot update user_data for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name))
                 if new_service_instance.key and updated_service_instance.key.name != new_service_instance.key.name:
                     logger.warning("Cannot update key for %s->%s without replacement." % (updated_topology.name, updated_service_instance.name))
     #Add or remove units according to minimal or maximal size
     for updated_service_instance in updated_topology.service_instances:
         if updated_service_instance not in appended_service_instances:
             if len(updated_service_instance.units) < updated_service_instance.size.get('min'):
                 for i in range(updated_service_instance.size.get('min') - len(updated_service_instance.units)):
                     _hostname = '%s-%s' % (
                         updated_service_instance.name, str(len(updated_service_instance.units) + 1))
                     _state = 'DEFINED'
                     new_unit = Unit(hostname=_hostname, state=_state)
                     new_unit.service_instance_id = updated_service_instance.id
                     updated_service_instance.units.append(new_unit)
                     db.persist(new_unit)
             if len(updated_service_instance.units) > updated_service_instance.size.get('max'):
                 for i in range(len(updated_service_instance.units) - updated_service_instance.size.get('max')):
                     removed_unit = updated_service_instance.units.pop(len(updated_service_instance.units) - 1)
                     db.remove(removed_unit)
     return updated_topology
コード例 #14
0
 def get_all(cls):
     conf = sys_util().get_sys_conf()
     db = FactoryAgent().get_agent(conf['database_manager'])
     lst = db.get_all(Topology)
     return lst
コード例 #15
0
 def delete(cls, topology):
     conf = sys_util().get_sys_conf()
     db = FactoryAgent().get_agent(conf['database_manager'])
     db.remove(topology)
     return topology