Ejemplo n.º 1
0
    def create_cloud_service(self, context):
        """
        :type
        :param : context: azure_key_id, experiment_id, template_unit
        
        If cloud service not exist in azure subscription, then create it
        Else reuse cloud service in azure subscription
        :return:
        """
        args_context = self.__generate_create_cloud_service_context(context)

        if self.azure_adapter.cloud_service_exists(context.azure_key_id, args_context.name):
            self.__check_cloud_service_in_db(args_context)
        else:
            self.__check_creation_requirement(args_context)
            # delete old azure cloud service in database, cascade delete old azure deployment,
            # old azure virtual machine and old azure end point
            delete_azure_cloud_service(args_context.name)
            self.__create_cloud_service(args_context)
            # make sure cloud service is created
            self.__check_exist_after_creation(args_context)

        # create virtual machine
        self.scheduler.add_once(feature='azure_vm_service',
                                method='create_virtual_machine',
                                context=context,
                                seconds=3)
        return True
Ejemplo n.º 2
0
    def create_cloud_service(self, context):
        """
        :type
        :param : context: azure_key_id, experiment_id, template_unit
        
        If cloud service not exist in azure subscription, then create it
        Else reuse cloud service in azure subscription
        :return:
        """
        args_context = self.__generate_create_cloud_service_context(context)

        if self.azure_adapter.cloud_service_exists(context.azure_key_id,
                                                   args_context.name):
            self.__check_cloud_service_in_db(args_context)
        else:
            self.__check_creation_requirement(args_context)
            # delete old azure cloud service in database, cascade delete old azure deployment,
            # old azure virtual machine and old azure end point
            delete_azure_cloud_service(args_context.name)
            self.__create_cloud_service(args_context)
            # make sure cloud service is created
            self.__check_exist_after_creation(args_context)

        # create virtual machine
        self.scheduler.add_once(feature='azure_vm_service',
                                method='create_virtual_machine',
                                context=context,
                                seconds=3)
        return True
Ejemplo n.º 3
0
 def __check_creation_requirement(self, context):
     # avoid name already taken by other azure subscription
     if not self.azure_adapter.check_hosted_service_name_availability(context.azure_key_id, context.name).result:
         m = '%s [%s] name not available' % (AZURE_RESOURCE_TYPE.CLOUD_SERVICE, context.name)
         commit_azure_log(context.experiment_id, ALOperation.CREATE_CLOUD_SERVICE, ALStatus.FAIL, m, 1)
         self.log.error(m)
         raise BadRequest("cloud service name not available")
     # avoid no available subscription remained
     if self.subscription.get_available_cloud_service_count(context.azure_key_id) < 1:
         m = '%s [%s] subscription not enough' % (AZURE_RESOURCE_TYPE.CLOUD_SERVICE, context.name)
         commit_azure_log(context.experiment_id, ALOperation.CREATE_CLOUD_SERVICE, ALStatus.FAIL, m, 2)
         self.log.error(m)
         raise BadRequest("cloud service subscription not enough")
     delete_azure_cloud_service(context.name)
Ejemplo n.º 4
0
 def __check_creation_requirement(self, context):
     # avoid name already taken by other azure subscription
     if not self.azure_adapter.check_hosted_service_name_availability(
             context.azure_key_id, context.name).result:
         m = '%s [%s] name not available' % (
             AZURE_RESOURCE_TYPE.CLOUD_SERVICE, context.name)
         commit_azure_log(context.experiment_id,
                          ALOperation.CREATE_CLOUD_SERVICE, ALStatus.FAIL,
                          m, 1)
         self.log.error(m)
         raise BadRequest("cloud service name not available")
     # avoid no available subscription remained
     if self.subscription.get_available_cloud_service_count(
             context.azure_key_id) < 1:
         m = '%s [%s] subscription not enough' % (
             AZURE_RESOURCE_TYPE.CLOUD_SERVICE, context.name)
         commit_azure_log(context.experiment_id,
                          ALOperation.CREATE_CLOUD_SERVICE, ALStatus.FAIL,
                          m, 2)
         self.log.error(m)
         raise BadRequest("cloud service subscription not enough")
     delete_azure_cloud_service(context.name)