예제 #1
0
    def test_simple_layout_options(self):
        # Using Euca with no input yaml, and no max or min images is not ok
        options_1 = self.default_options.copy()
        options_1['infrastructure'] = 'euca'
        layout_1 = NodeLayout(options_1)
        self.assertEquals(False, layout_1.is_valid())
        self.assertEquals(NodeLayout.NO_YAML_REQUIRES_MIN, layout_1.errors())

        options_2 = self.default_options.copy()
        options_2['infrastructure'] = "euca"
        options_2['max'] = 2
        layout_2 = NodeLayout(options_2)
        self.assertEquals(False, layout_2.is_valid())
        self.assertEquals(NodeLayout.NO_YAML_REQUIRES_MIN, layout_2.errors())

        options_3 = self.default_options.copy()
        options_3['infrastructure'] = "euca"
        options_3['min'] = 2
        layout_3 = NodeLayout(options_3)
        self.assertEquals(False, layout_3.is_valid())
        self.assertEquals(NodeLayout.NO_YAML_REQUIRES_MAX, layout_3.errors())

        # Using Euca with no input yaml, with max and min images set is ok
        options_4 = self.default_options.copy()
        options_4['infrastructure'] = "euca"
        options_4['min'] = 2
        options_4['max'] = 2
        layout_4 = NodeLayout(options_4)
        self.assertEquals(True, layout_4.is_valid())

        # Using virtualized deployments with no input yaml is not ok
        options_5 = self.default_options.copy()
        layout_5 = NodeLayout(options_5)
        self.assertEquals(False, layout_5.is_valid())
        self.assertEquals([NodeLayout.INPUT_YAML_REQUIRED], layout_5.errors())
예제 #2
0
  def test_simple_layout_options(self):
    # Using Euca with no input yaml, and no max or min images is not ok
    options_1 = self.default_options.copy()
    options_1['infrastructure'] = 'euca'
    layout_1 = NodeLayout(options_1)
    self.assertEquals(False, layout_1.is_valid())
    self.assertEquals(NodeLayout.NO_YAML_REQUIRES_MIN, layout_1.errors())

    options_2 = self.default_options.copy()
    options_2['infrastructure'] = "euca"
    options_2['max'] = 2
    layout_2 = NodeLayout(options_2)
    self.assertEquals(False, layout_2.is_valid())
    self.assertEquals(NodeLayout.NO_YAML_REQUIRES_MIN, layout_2.errors())

    options_3 = self.default_options.copy()
    options_3['infrastructure'] = "euca"
    options_3['min'] = 2
    layout_3 = NodeLayout(options_3)
    self.assertEquals(False, layout_3.is_valid())
    self.assertEquals(NodeLayout.NO_YAML_REQUIRES_MAX, layout_3.errors())

    # Using Euca with no input yaml, with max and min images set is ok
    options_4 = self.default_options.copy()
    options_4['infrastructure'] = "euca"
    options_4['min'] = 2
    options_4['max'] = 2
    layout_4 = NodeLayout(options_4)
    self.assertEquals(True, layout_4.is_valid())

    # Using virtualized deployments with no input yaml is not ok
    options_5 = self.default_options.copy()
    layout_5 = NodeLayout(options_5)
    self.assertEquals(False, layout_5.is_valid())
    self.assertEquals([NodeLayout.INPUT_YAML_REQUIRED], layout_5.errors())
예제 #3
0
    def test_simple_layout_yaml_only(self):
        # Specifying one controller and one server should be ok
        input_yaml_1 = {'controller': self.ip_1, 'servers': [self.ip_2]}
        options_1 = self.default_options.copy()
        options_1['ips'] = input_yaml_1
        layout_1 = NodeLayout(options_1)
        self.assertEquals(True, layout_1.is_valid())

        # Specifying one controller should be ok
        input_yaml_2 = {'controller': self.ip_1}
        options_2 = self.default_options.copy()
        options_2['ips'] = input_yaml_2
        layout_2 = NodeLayout(options_2)
        self.assertEquals(True, layout_2.is_valid())

        # Specifying the same IP more than once is not ok
        input_yaml_3 = {'controller': self.ip_1, 'servers': [self.ip_1]}
        options_3 = self.default_options.copy()
        options_3['ips'] = input_yaml_3
        layout_3 = NodeLayout(options_3)
        self.assertEquals(False, layout_3.is_valid())
        self.assertEquals(NodeLayout.DUPLICATE_IPS, layout_3.errors())

        # Failing to specify a controller is not ok
        input_yaml_4 = {'servers': [self.ip_1, self.ip_2]}
        options_4 = self.default_options.copy()
        options_4['ips'] = input_yaml_4
        layout_4 = NodeLayout(options_4)
        self.assertEquals(False, layout_4.is_valid())
        self.assertEquals(NodeLayout.NO_CONTROLLER, layout_4.errors())

        # Specifying more than one controller is not ok
        input_yaml_5 = {
            'controller': [self.ip_1, self.ip_2],
            'servers': [self.ip_3]
        }
        options_5 = self.default_options.copy()
        options_5['ips'] = input_yaml_5
        layout_5 = NodeLayout(options_5)
        self.assertEquals(False, layout_5.is_valid())
        self.assertEquals(NodeLayout.ONLY_ONE_CONTROLLER, layout_5.errors())

        # Specifying something other than controller and servers in simple
        # deployments is not ok
        input_yaml_6 = {
            'controller': self.ip_1,
            'servers': [self.ip_2],
            'boo': self.ip_3
        }
        options_6 = self.default_options.copy()
        options_6['ips'] = input_yaml_6
        layout_6 = NodeLayout(options_6)
        self.assertEquals(False, layout_6.is_valid())
        self.assertEquals(["The flag boo is not a supported flag"],
                          layout_6.errors())
예제 #4
0
  def test_simple_layout_yaml_only(self):
    # Specifying one controller and one server should be ok
    input_yaml_1 = {
      'controller' : self.ip_1,
      'servers' : [self.ip_2]
    }
    options_1 = self.default_options.copy()
    options_1['ips'] = input_yaml_1
    layout_1 = NodeLayout(options_1)
    self.assertEquals(True, layout_1.is_valid())

    # Specifying one controller should be ok
    input_yaml_2 = {'controller' : self.ip_1}
    options_2 = self.default_options.copy()
    options_2['ips'] = input_yaml_2
    layout_2 = NodeLayout(options_2)
    self.assertEquals(True, layout_2.is_valid())

    # Specifying the same IP more than once is not ok
    input_yaml_3 = {'controller' : self.ip_1, 'servers' : [self.ip_1]}
    options_3 = self.default_options.copy()
    options_3['ips'] = input_yaml_3
    layout_3 = NodeLayout(options_3)
    self.assertEquals(False, layout_3.is_valid())
    self.assertEquals(NodeLayout.DUPLICATE_IPS, layout_3.errors())

    # Failing to specify a controller is not ok
    input_yaml_4 = {'servers' : [self.ip_1, self.ip_2]}
    options_4 = self.default_options.copy()
    options_4['ips'] = input_yaml_4
    layout_4 = NodeLayout(options_4)
    self.assertEquals(False, layout_4.is_valid())
    self.assertEquals(NodeLayout.NO_CONTROLLER, layout_4.errors())

    # Specifying more than one controller is not ok
    input_yaml_5 = {'controller' : [self.ip_1, self.ip_2], 'servers' :
      [self.ip_3]}
    options_5 = self.default_options.copy()
    options_5['ips'] = input_yaml_5
    layout_5 = NodeLayout(options_5)
    self.assertEquals(False, layout_5.is_valid())
    self.assertEquals(NodeLayout.ONLY_ONE_CONTROLLER, layout_5.errors())

    # Specifying something other than controller and servers in simple
    # deployments is not ok
    input_yaml_6 = {'controller' : self.ip_1, 'servers' : [self.ip_2],
      'boo' : self.ip_3}
    options_6 = self.default_options.copy()
    options_6['ips'] = input_yaml_6
    layout_6 = NodeLayout(options_6)
    self.assertEquals(False, layout_6.is_valid())
    self.assertEquals(["The flag boo is not a supported flag"],
      layout_6.errors())